我一直在到处找这个,但我似乎找不到。我知道如何解雇使用Objective-C键盘,但我不知道如何使用Swift?有人知道吗?
当前回答
Swift 5只要两行就够了。添加到你的viewDidLoad应该工作。
let tapGesture = UITapGestureRecognizer(target: view, action: #selector(UIView.endEditing))
view.addGestureRecognizer(tapGesture)
如果你的点击手势阻止了一些其他的触摸,那么添加这一行:
tapGesture.cancelsTouchesInView = false
其他回答
对于Swift 3来说,这非常简单
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
如果你想隐藏键盘按回车键
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
但在第二种情况下,你还需要通过委托从所有文本字段的ViewController在主。故事板
Dash的回答是正确的。一个更“焦土”的方法是调用view. enditing (true)。这将导致视图及其所有子视图resignFirstResponder。如果您没有想要删除的视图的引用,这是一种俗气但有效的解决方案。
请注意,我个人认为你应该有一个引用的视图,你想要有辞职第一响应者. enditing (force: Bool)是一个野蛮的方法;请不要使用它。
斯威夫特3
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
这一行代码辞去了UIView中所有UITextField的键盘
self.view.endEditing(true)
Swift 4工作
创建扩展如下所示,并在你的基本视图控制器中调用hideKeyboardWhenTappedAround()。
//
// UIViewController+Extension.swift
// Project Name
//
// Created by ABC on 2/3/18.
// Copyright © 2018 ABC. All rights reserved.
//
import UIKit
extension UIViewController {
func hideKeyboardWhenTappedAround() {
let tapGesture = UITapGestureRecognizer(target: self,
action: #selector(hideKeyboard))
view.addGestureRecognizer(tapGesture)
}
@objc func hideKeyboard() {
view.endEditing(true)
}
}
最重要的是调用Base视图控制器这样就不需要在所有视图控制器中调用所有时间。
推荐文章
- 如何删除默认的导航栏空间在SwiftUI导航视图
- 如何在iOS中使用Swift编程segue
- Swift -整数转换为小时/分钟/秒
- 如何舍入一个双到最近的Int在迅速?
- 扁平化数组的数组在Swift
- Swift:声明一个空字典
- 在成功提交我的应用程序后,“太多符号文件”
- 从数组中随机选择一个元素
- 首先添加一个UIView,甚至是导航栏
- 我如何改变UIButton标题颜色?
- 在Swift中如何调用GCD主线程上的参数方法?
- NSLayoutConstraints是可动画的吗?
- iOS -构建失败,CocoaPods无法找到头文件
- CFNetwork SSLHandshake iOS 9失败
- swift语言中的结构与类