2016-01-19 28 views
0

出於某種原因,我不明白爲什麼當文字被填充在我的按鈕將不會啓用按鈕。使用textFieldDidendEditing啓用/禁用迅速

這是我如何設定它。

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    calculateButton.enabled = false 

    panelWidthTextField.delegate = self 
    panelsWideTextField.delegate = self 
    panelHightTextField.delegate = self 
    panelsHightTextField.delegate = self 
    panelPitchTextField.delegate = self 

} 
// Disable button when text is missing 
func textFieldDidendEditing(textField: UITextField) 
{ 

    if ((panelWidthTextField.text?.isEmpty != nil) && 
     (panelsWideTextField.text?.isEmpty != nil) && 
     (panelHightTextField.text?.isEmpty != nil) && 
     (panelsHightTextField.text?.isEmpty != nil) && 
     (panelPitchTextField.text?.isEmpty != nil)) 
    { 
     calculateButton.enabled = false 
    } 

    else 
    { 
     self.calculateButton.enabled = true 
    } 

} 

如果任何人有一個更好的方式來做到這一點功能都幫助和提示是讚賞

回答

1
override func viewDidLoad() { 

    panelWidthTextField.delegate = self 
    panelsWideTextField.delegate = self 
    panelHightTextField.delegate = self 
    panelsHightTextField.delegate = self 
    panelPitchTextField.delegate = self 

    // Disable button 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: "textChanged:", name: UITextFieldTextDidChangeNotification, object: nil) 
     calculateButton.enabled = false 
} 

將這個功能在你的類

func textChanged(sender: NSNotification) { 

    if panelWidthTextField.hasText() && panelsWideTextField.hasText() && panelHightTextField && panelPitchTextField.hasText() && panelsHightTextField.hasText(){ 

     calculateButton.enabled = true 
    } else { 
     calculateButton.enabled = false 
    } 
} 

(myButton的必須是一個出口)

讓我知道它是否有效

+0

W像一個魅力一樣,謝謝你的幫助。一直在磨這個頭。 :-) – lightmaster2006

+0

不客氣的@ lightmaster2006 –

0

而不是textField.text?.isEmpty != nil嘗試使用!textField.text?.isEmtpy

使用!(NOT邏輯運算符),如果isEmptyfalse(在文本字段沒有文本)將返回true。 詢問有無isEmpty != nil將返回true,如果isEmpty有任何值(TRUE或FALSE)