设置下一个按钮和完成按钮,而不是在键盘 swift 4 中返回

Posted

技术标签:

【中文标题】设置下一个按钮和完成按钮,而不是在键盘 swift 4 中返回【英文标题】:set next Button & Done Button instead of return in keyboard swift 4 【发布时间】:2018-10-30 10:24:55 【问题描述】:

https://i.stack.imgur.com/yNZh1.gif

当键盘出现在工具栏中时,我需要下一个按钮、上一个按钮和完成按钮 我已经实现了这段代码...

导入 UIKit

类 ViewController: UIViewController,UITextFieldDelegate

@IBOutlet weak var textfieldOne: UITextField!
@IBOutlet weak var textFieldTwo: UITextField!
@IBOutlet weak var textFieldThree: UITextField!

override func viewDidLoad() 
    super.viewDidLoad()



func setAccessoryViewFor(textField : UITextField)   
    let toolBar = UIToolbar()
    toolBar.barStyle = .default
    toolBar.isTranslucent = true
    toolBar.sizeToFit()

    // Adds the buttons

    // Add previousButton
    let prevButton = UIBarButtonItem(title: "<", style: .plain, target: self, action: #selector(previousPressed(sender:)))
    prevButton.tag = textField.tag
    if getPreviousResponderFor(tag: textField.tag) == nil 
        prevButton.isEnabled = false
    

    // Add nextButton
    let nextButton = UIBarButtonItem(title: ">", style: .plain, target: self, action: #selector(nextPressed(sender:)))
    nextButton.tag = textField.tag
    if getNextResponderFor(tag: textField.tag) == nil 
        nextButton.title = "Done"
    

    let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    toolBar.setItems([prevButton,spaceButton,nextButton], animated: false)
    toolBar.isUserInteractionEnabled = true
    textField.inputAccessoryView = toolBar




@objc func nextPressed(sender : UIBarButtonItem) 
    if let nextResponder = getNextResponderFor(tag: sender.tag) 
        nextResponder.becomeFirstResponder()
     else 
        self.view.endEditing(true)
    



@objc func previousPressed(sender : UIBarButtonItem) 
    if let previousResponder = getPreviousResponderFor(tag : sender.tag)  
        previousResponder.becomeFirstResponder()
    


func getNextResponderFor(tag : Int) -> UITextField? 
    return self.view.viewWithTag(tag + 1) as? UITextField


func getPreviousResponderFor(tag : Int) -> UITextField? 
    return self.view.viewWithTag(tag - 1) as? UITextField

请任何人帮忙...

【问题讨论】:

【参考方案1】:

您可以注册键盘出现/消失事件,并可以在其顶部添加带有nextback 按钮的UIToolBar。或者,只需集成 this 库,几行代码就完成了。

【讨论】:

以上是关于设置下一个按钮和完成按钮,而不是在键盘 swift 4 中返回的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中更改键盘完成按钮上 Textfield 的文本?

如何从 Webview 的键盘完成按钮操作

如何在 Swift 2.0 中使用完成按钮做数字键盘?

如何在视图中点击提交按钮而不必先关闭键盘?

如何在不单击后退按钮的情况下隐藏键盘[重复]

javascript 保持你的“按钮”实例并改变它的道具而不是在道具改变时创建新按钮,这样你就可以保持键盘导航了