好了,我有一个函数,允许我的用户使用键盘转到下一个字段(我从SO那里得到了代码)它工作得很好。我的问题是,一旦我的用户到达了最后一个文本字段,在这个字段中,我选择了“GO”作为返回按钮,而我想使用go作为理想的提交按钮。当通过表单的流程进行时,它看起来是正确的,但最后的功能并不存在。我在这里找到了答案,但它似乎调用了与“next field”代码相同的函数。因此,它们不能很好地协同工作。下面是Next Field代码的外观:
override func viewDidLoad() {
super.viewDidLoad()
// Keyboard Next Field & Delegate
enterEmailTextField.delegate = self
enterPasswordTextField.delegate = self
self.enterEmailTextField.nextField = self.enterPasswordTextField
self.enterPasswordTextField.nextField = self.enterNameTextField
// ...
}
下一个块显示在override(我相信你知道)func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() }
下面
// Next Field
func textFieldShouldReturn(textField: UITextField) -> Bool {
if let nextField = textField.nextField {
nextField.becomeFirstResponder()
}
return true
}
好的,直到最后一个文本字段都很好,但是由于最后一个字段是“Go”,我试图模仿我对一个按钮使用@IBAction的做法,而不是使用go按钮。下面是我得到Go to work的想法/代码的地方:
Action of the "Go" button of the ios keyboard
如何实现这些?或者只是为了处理下一个函数,并实现一个类似于@IBaction的“keyboard go”操作?也许只是一个全面的更好的方法来实现这两个操作,使它们彼此一致?任何帮助都非常感谢!
请编辑!
我忘记了实际的NextField.swift文件,我确信它很重要(抱歉)
import Foundation
import UIKit
private var kAssociationKeyNextField: UInt8 = 0
extension UITextField {
@IBOutlet var nextField: UITextField? {
get {
return objc_getAssociatedObject(self, &kAssociationKeyNextField) as? UITextField
}
set(newField) {
objc_setAssociatedObject(self, &kAssociationKeyNextField, newField, UInt(OBJC_ASSOCIATION_RETAIN))
}
}
}
我想这会有很大帮助
3条答案
按热度按时间ca1c2owp1#
关于处理Tab键顺序和表单提交的更简洁的方法,请阅读我的答案here。
rsaldnfx2#
首先将return键设置为TextField中的Go,然后实现以下方法:
请参见下图:
0kjbasz63#
适用于iOS 15的SwiftUI。您可以使用**.submitLabel(.go)**来执行此操作。