【发布时间】:2020-08-18 02:01:01
【问题描述】:
我使用this pod 来处理文本字段和键盘。在我的 App.Delegate 文件中,我导入了 IQKeyboardManagerSwift 并启用了它,现在可以正常工作了。但是,我现在遇到的问题是,即使用户在键盘上点击返回键,我也无法关闭键盘并且键盘保持不变。我添加了IQKeyboardManager.shared.shouldResignOnTouchOutside = true,所以当用户点击键盘外部时,键盘会关闭。我想添加当用户点击键盘上的返回按钮时,键盘也会关闭的功能。我猜resignFirstResponder() 会启用这个功能(Resigns current first responder field),但我不知道如何实现这个功能。
我看到其他人使用 textfieldShouldReturn 函数,但我认为如果我在视图控制器中添加代码,我必须多次使用该函数。目前,我有几个文本字段,所以如果可能的话,我只想写一次代码。
如何实现该功能?
import IQKeyboardManagerSwift
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
IQKeyboardManager.shared.enable = true
IQKeyboardManager.shared.enableAutoToolbar = false
IQKeyboardManager.shared.shouldResignOnTouchOutside = true
IQKeyboardManager.shared.resignFirstResponder()
return true
}
....
}
【问题讨论】:
-
只用textfieldShouldReturn,你只需要写一次
-
@goat_herd 我想如果我使用 textfieldShoudReturn,我需要指定要结束编辑的文本字段,例如 emailTextField.endEditing(true)。如果我使用 textfieldShouldReturn,函数体中会是什么样子,我应该把函数放在哪里?对不起,我是超级初学者,需要时间来理解一切......
-
不,你应该使用这个函数:view.endEditing(true)。所以你不需要检查你的 textField 是什么
-
我明白了。那么我应该把 textfieldshouldReturn 函数放在哪里呢?是否在 AppDelegate 中?
-
不,在viewDidLoad中将你的textField的delegate设置为self,然后让你的ViewController符合UITextFiledDelegate并在那里实现textFieldSouldReturn,我已经发布了插图的答案