(iOS8,Xcode6,Swift) 使用Swift,我如何捕捉" Return"按钮?
以下链接中的文档指定使用textFieldShouldReturn
方法:
// Swift
@optional func textFieldShouldReturn(_ textField: UITextField!) -> Bool
我挂断的地方在" _ textField"部分。我使用Storyboard创建了文本字段。如何捕获此特定文本字段的通知?我是否需要创建一个新类并将其设置为此文本字段的委托?我是否为文本分配了一个名称,然后以某种方式将其挂钩?
https://developer.apple.com/documentation/uikit/uitextfielddelegate/1619603-textfieldshouldreturn
答案 0 :(得分:84)
class ViewController: UIViewController,UITextFieldDelegate //set delegate to class
@IBOutlet var txtValue: UITextField //create a textfile variable
override func viewDidLoad() {
super.viewDidLoad()
txtValue.delegate = self //set delegate to textfile
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool { //delegate method
textField.resignFirstResponder()
return true
}
答案 1 :(得分:21)
实施此功能
func textFieldShouldReturn(_ textField: UITextField) -> Bool { //delegate method
textField.resignFirstResponder()
return true
}
对于委托,您可以使用实用工具窗格/ Connections Inspector / delegate 进行设置,然后拖动到ViewController(故事板中的黄色按钮)
然后您不需要以编程方式为每个文本字段设置委托
答案 2 :(得分:3)
您需要将对象设置为文本字段的委托。通常,这将是文本字段所在的视图控制器。您不需要从任何其他类继承,或者严格来说,实现委托(但您可以实现UITextFieldDelegate以使事情更清楚。)
答案 3 :(得分:0)
在Swift 4.2和Xcode 10.1中
//UITextField delegate method
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
if textField == TF1 {
textField.resignFirstResponder()//
TF2.becomeFirstResponder()//TF2 will respond immediately after TF1 resign.
} else if textField == TF2 {
textField.resignFirstResponder()
TF3.becomeFirstResponder()//TF3 will respond first
} else if textField == TF3 {
textField.resignFirstResponder()
}
return true
}