当用户按下键盘上的返回按钮时如何关闭键盘?

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 次

以上是关于当用户按下键盘上的返回按钮时如何关闭键盘?的主要内容,如果未能解决你的问题,请参考以下文章

如果用户在返回键盘之前按下按钮,如何将按钮操作应用于文本字段

带有软键盘和“返回”按钮的 EditText

React Native 如何防止键盘在文本提交时关闭?

按下返回键时隐藏软键盘

按下回车键隐藏 android 键盘

iPhone:隐藏应用程序上的键盘输入背景或视图消失