我已经阅读了有关如何创建这些按钮的文章,但它们使用标签系统来标识textField。我正在使用原型单元格来创建我的textFields

func addDoneButtonOnKeyboard(_ hasNextBtn: Bool = false) -> UIView {
    let doneToolbar: UIToolbar = UIToolbar(frame: CGRect(x: 0, y: 163, width: 106, height: 53))
    doneToolbar.barStyle = UIBarStyle.default

    let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)

    let done: UIBarButtonItem = UIBarButtonItem(title: "Done",
                                                style: UIBarButtonItemStyle.done,
                                                target: self,
                                                action: #selector(doneAction))
    let next: UIBarButtonItem = UIBarButtonItem(title: "Next",
                                                style: .plain,
                                                target: self,
                                                action: #selector(nextAction))

    var items = [UIBarButtonItem]()
    items.append(flexSpace)
    if hasNextBtn {
        items.append(next)
    } else {
        items.append(done)
    }

    doneToolbar.items = items
    doneToolbar.sizeToFit()

    return doneToolbar
}

@objc func doneAction() {
    self.view.endEditing(true)
}

@objc func nextAction(_ textField: UITextField) -> Bool {
    let indexPath = IndexPath(row: index, section: 2)

    // if textField.returnKeyType == .next {
    if textField.inputAccessoryView == next as! UIView? {
        guard let table = tableView, let ip = indexPath,
            let cell = table.cellForRow(at: IndexPath(row: ip.row + 1, section: ip.section)) as? FormFieldTableViewCell
            else { return true }

        return cell.becomeFirstResponder()
    }

    return true
}

最佳答案

您可以按以下方法更改键盘上的更改按钮类型,
//在cellForRowAtIndexPath方法中分配

yourTextField.returnKeyType = .Next
txtField.returnKeyType = .Done
txtField.returnKeyType = .Go


还有更多来自下面的内容

case Default
case Go
case Google
case Join
case Next
case Route
case Search
case Send
case Yahoo
case Done
case EmergencyCall


之后,您可以根据需要在UITextFieldDelegate中处理动作。

09-12 09:37