如何处理工具栏中的 IQKeyboardManager 完成按钮操作?

Posted

技术标签:

【中文标题】如何处理工具栏中的 IQKeyboardManager 完成按钮操作?【英文标题】:How to Handle IQKeyboardManager Done button action in toolbar? 【发布时间】:2017-10-26 09:33:24 【问题描述】:

我是 ios 新手,我在 iqkeyboardmanager 上工作,我想在 IQKeyboardManager 中访问完成按钮操作。

【问题讨论】:

好吧,我认为您无法处理 IQKeyboard 中的完成按钮,但如果您想执行某些操作,您可以在键盘中的 Return key 上设置自定义操作 但我也想处理完成按钮操作 【参考方案1】:

您可以处理完成、下一个和上一个按钮的点击

[textField.keyboardToolbar.previousBarButton setTarget:self action:@selector(previousAction:)];
[textField.keyboardToolbar.nextBarButton setTarget:self action:@selector(nextAction:)];
[textField.keyboardToolbar.doneBarButton setTarget:self action:@selector(doneAction:)];

迅速:

customField.keyboardToolbar.doneBarButton.setTarget(self, action: #selector(doneButtonClicked))

func doneButtonClicked(_ sender: Any) 
        //your code when clicked on done

【讨论】:

在使用上述方法时,我在 swift “'UITextField' 类型的值没有成员 'keyboardToolbar'”中遇到错误 @Lalit Kumar 我收到此错误 - 在“IQDropDownTextField *”类型的对象上找不到属性“keyboardToolbar” 在标头中添加#import "IQKeyboardManager.h" 后它可以工作。 :) 工作就像一个魅力。享受这一天。【参考方案2】:

你可以使用 UITextViewDelegate

func textFieldDidEndEditing(_ textField: UITextField) 

 

【讨论】:

但是即使用户没有点击完成按钮,这个委托函数也会被调用。我只需点按屏幕,此功能也会触发。 这个委托可能会从键盘的返回键调用,所以不是很好的解决方案。【参考方案3】:

你可以导入

import IQKeyboardManager

在所需文件中及之后

vc1Textfield.addDoneOnKeyboard(withTarget: self, action: #selector(doneButtonClicked))

这里 vc1Textfield 是我的文本字段,doneButtonClicked 定义如下:

@objc func doneButtonClicked(_ sender: Any)  

希望对某人有所帮助!!!快乐编码......

【讨论】:

【参考方案4】:

我会尽量用更方便的方式描述:

import IQKeyboardManagerSwift

class EditPostViewCell: UITableViewCell 

   @IBOutlet weak var commentTextView: UITextView!


   override func awakeFromNib() 
      IQKeyboardManager.shared.toolbarDoneBarButtonItemText = "Send Comment"
      commentTextView.delegate = self
   

   @objc func didPressOnDoneButton() 
      commentTextView.resignFirstResponder()
      sendComment()
   



extension EditPostViewCell: UITextViewDelegate 

   public func textViewDidBeginEditing(_ textView: UITextView) 
      let invocation = IQInvocation(self, #selector(didPressOnDoneButton))
      textView.keyboardToolbar.doneBarButton.invocation = invocation
   

【讨论】:

【参考方案5】:

首先: import the IQKeyboardManager.h

然后:

[self.textField.keyboardToolbar.doneBarButton setTarget:self action:@selector(doneAction:)];

【讨论】:

【参考方案6】:

xcode 11。 用代码制作Action连接textField。

@IBAction func yourName(_ sender: Any)
// Your code
 

Connections inspector screen

【讨论】:

以上是关于如何处理工具栏中的 IQKeyboardManager 完成按钮操作?的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS 4 中的自定义溢出处理程序实现

如何检测企业 Java 项目(Java + JSP + Javascript)中的死代码?

如何使用Chrome中的profiles功能

如何将Python自然语言处理速度提高100倍?

批处理如何去掉/删除文件名中的指定字符

如何使用 AWS 胶水获取存储在 s3 中的模式或已处理的嵌套 json 文件压缩(gzip)?