当用户按下键盘上的返回按钮时如何关闭键盘?
Posted
技术标签:
【中文标题】当用户按下键盘上的返回按钮时如何关闭键盘?【英文标题】:How to dismiss keyboard when a user press return button on keyboard? 【发布时间】: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,我已经发布了插图的答案 【参考方案1】:将所有 textField 的委托设置为 viewController:
yourTextField.delegate = self
然后让你的 viewController 适应 UITextField Delegate:
// MARK: - UITextFieldDelegate
extension YourViewController: UITextFieldDelegate
func textFieldShouldReturn(_ textField: UITextField) -> Bool
view.endEditing(true)
【讨论】:
我明白了。所以让我在这里确认一下。如果我有多个视图控制器,比如说三个,每个视图控制器都有两个文本字段。在这种情况下,我必须在每个视图控制器中添加两次 XYZtextfeild.delegate = self 并且总共编写三次 textFieldshouldReturn 函数对吗? 不行,你需要设置 textFiled.delegate = self total 6 次, textFieldSouldReturn 3 次以上是关于当用户按下键盘上的返回按钮时如何关闭键盘?的主要内容,如果未能解决你的问题,请参考以下文章