ios - 使用全局函数添加键盘完成按钮

标签 ios swift

我想弄清楚如何创建一个全局函数,为我选择的键盘添加一个完成按钮。

我可以添加一个完成按钮,但我目前将代码复制到每个 View Controller 。我想向 UITextField 添加一个函数以在键盘上显示完成按钮。 堆栈溢出时常见的当前代码。

在 viewDidLoad 中找到的代码:

let toolbar = UIToolbar()
toolbar.sizeToFit()
let doneBotton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.done, target: self, action: #selector(self.doneClicked))

toolbar.setItems([doneBotton], animated: false)

@objc 在 vi​​ewdidload 之外发现:

@objc func doneClicked() {
    view.endEditing(true)
}

最佳答案

您可以像下面这样简单地创建 UITextField 的扩展:-

extension UITextField {

func addDoneButton() {
    let toolbar = UIToolbar()
    toolbar.sizeToFit()

    let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneClicked))

    toolbar.setItems([doneButton], animated: false)

    self.inputAccessoryView = toolbar
}

@objc func doneClicked() {
    self.endEditing(true)
}
}

然后像下面这样调用它:-

class DoneKeyboardViewController: UIViewController {

@IBOutlet weak var txtField: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()

    txtField.addDoneButton()
}
}

关于ios - 使用全局函数添加键盘完成按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55054907/

相关文章:

iphone - mp3 文件的 http 直播

iOS 8 自定义键盘应用程序扩展 - 更改方向高度

ios - UITextView文字在高度达到8192.0后变得不可见

swift - 当参与者在 iOS 中单击西类牙语网站时应用程序以西类牙语打开

objective-c - 再次将 textKit 从 Objective-C 转换为 Swift

swift - 对 swift 中的可选值感到困惑

ios - UIActivityIndi​​cator 不工作

android - ios 上的 cordova 应用程序中的视频没有声音

ios - JsonEncoder 总是返回空数组

swift - 如何让 Xcode 在混合应用程序的 webview 中查找元素?