以下:只要textField1
为空,textField2
即被禁用。如果是后者是非空的,我们使textField2
,但使Go
按钮只有textField2
非空(通过.enablesReturnKeyAutomatically
属性),
/* ViewController.swift */
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// text field delegates
textField1.delegate = self
textField2.delegate = self
// set return key styles
textField1.returnKeyType = UIReturnKeyType.Next
textField2.returnKeyType = UIReturnKeyType.Go
// only enable textField2 if textField1 is non-empty
textField2.enabled = false
// only enable 'go' key of textField2 if the field itself is non-empty
textField2.enablesReturnKeyAutomatically = true
}
// UITextFieldDelegate
func textFieldShouldReturn(textField: UITextField) -> Bool {
if (textField1.text?.isEmpty ?? true) {
textField2.enabled = false
textField.resignFirstResponder()
}
else if textField == textField1 {
textField2.enabled = true
textField2.becomeFirstResponder()
}
else {
textField.resignFirstResponder()
}
return true
}
}
运行过程如下:
如何你有没有将'textField1':s下一个响应者设置为'textField2?'(之前有“Next”而不是“Return”)。只是'textField1.returnKeyType = UIReturnKeyType.Next'? – dfri
是的,我认为这很棘手(例如:'textField1'为空,但'textField2'不是:'Go'按钮将被启用)。我已经看到一些未公开的obj-c黑客将返回按钮设置为启用/禁用,但我无法将它们调整为快捷。另外,我们希望避免无证黑客。请参阅[此主题]。 – dfri
好的,这是我最后的尝试,现在我需要去睡觉。只要第一个文本视图为空,该最终版本就会禁用第二个文本视图。之后,只要它是空的,我会在第二个文本视图中使用“Go”按钮。 – dfri