【发布时间】:2015-09-18 09:43:48
【问题描述】:
好的,所以我有一个功能,允许我的用户使用键盘转到下一个字段(我从 SO 获得代码)它工作得很好。我的问题是,一旦我的用户到达最终的文本字段,我选择“GO”作为返回按钮,我想使用 go 作为理想的提交按钮。随着表单的流动,它看起来是正确的,但最后的功能不存在。我在这里找到了答案,但看起来它调用了与“下一个字段”代码相同的函数。所以他们不能很好地合作。下面是 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
// ...
}
下一个块显示在覆盖下方(我相信你知道)func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() }
// Next Field
func textFieldShouldReturn(textField: UITextField) -> Bool {
if let nextField = textField.nextField {
nextField.becomeFirstResponder()
}
return true
}
好的,直到最后一个文本字段都可以正常工作,但是由于最后一个字段是“Go”,所以我试图模仿我会用@IBAction 来表示按钮,而不是 go 按钮。这是我得到 Go 工作的想法/代码的地方:
Action of the "Go" button of the ios keyboard
关于如何实现这些的任何想法?或者只是为了使用下一个函数,并实现类似于@IBaction 的“键盘启动”操作?也许只是一种更好的方式来实现这两者,使它们彼此一致?非常感谢任何帮助!
编辑!
我忘记了实际的 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))
}
}
}
我认为这会很有帮助
【问题讨论】:
标签: ios xcode swift ios8 swift2