【发布时间】:2018-05-12 05:33:35
【问题描述】:
我一直在尝试实现这个工具栏,当顶部的 textField 是 firstResponder 时,只启用“下一步”按钮,而当底部的 textField 是 firstResponder 时,只启用“上一个”按钮。
它有点工作,但我需要通过访问其他类(如委托)中的上一个、下一个和完成按钮操作方法来执行我自己的代码
提前感谢您的建议..
extension UIViewController {
func addInputAccessoryForTextFields(textFields: [UITextField], dismissable: Bool = true, previousNextable: Bool = false) {
for (index, textField) in textFields.enumerated() {
let toolbar: UIToolbar = UIToolbar()
toolbar.sizeToFit()
var items = [UIBarButtonItem]()
if previousNextable {
let previousButton = UIBarButtonItem(image: UIImage(named: "Backward Arrow"), style: .plain, target: nil, action: nil)
previousButton.width = 30
if textField == textFields.first {
previousButton.isEnabled = false
} else {
previousButton.target = textFields[index - 1]
previousButton.action = #selector(UITextField.becomeFirstResponder)
}
let nextButton = UIBarButtonItem(image: UIImage(named: "Forward Arrow"), style: .plain, target: nil, action: nil)
nextButton.width = 30
if textField == textFields.last {
nextButton.isEnabled = false
} else {
nextButton.target = textFields[index + 1]
nextButton.action = #selector(UITextField.becomeFirstResponder)
}
items.append(contentsOf: [previousButton, nextButton])
}
let spacer = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: view, action: #selector(UIView.endEditing))
items.append(contentsOf: [spacer, doneButton])
toolbar.setItems(items, animated: false)
textField.inputAccessoryView = toolbar
}
}
}
我在其他类中将其称为:
let field1 = UITextField()
let field2 = UITextField()
addInputAccessoryForTextFields([field1, field2], dismissable: true, previousNextable: true)
【问题讨论】:
-
您的问题是,您没有获得上一个和下一个按钮?正确的?还是别的什么?
-
@AnkitJayaswal 我想在与委托方法相同的其他类中的上一个、下一个按钮操作方法中执行我自己的代码
标签: ios swift uibarbuttonitem uitoolbar