以下:只要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