2015-11-04 72 views
1

我正在嘗試類似於Spotify登錄屏幕。當用戶名或密碼字段爲空時,登錄按鈕被禁用並且不能被按下。我不知道如何一致地檢查字段是否爲空,所以我試圖使用textFieldDidEndEditing,儘管它目前不工作。這是我迄今爲止所擁有的。有沒有更有效的方法來解決這個問題?輸入爲空時禁用按鈕交互

func textFieldDidEndEditing(textField: UITextField) { 
     if (usernameField.text! == "" || passwordField.text! == "") { 
      loginButton.userInteractionEnabled = false 
      loginButton.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal) 
      print("field empty") 
     } 
    } 

此外,這裏有截圖供參考,目標是什麼。

No input Input

(PS,對不起照片的尺寸,我不知道如何使它更小)

回答

-1

我能解決動物幫助的問題。這個問題可以很容易地解決,只需創建一個新的密碼字段IBAction並添加以下代碼:

@IBAction func passwordEditing(sender: AnyObject) { 
    if self.usernameField.text! != "" && self.passwordField.text! != ""{ 
     loginButton.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal) 
     loginButton.userInteractionEnabled = true 
     print("both fields ok!") 
    } else { 
     loginButton.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal) 
    } 

} 
0

您可以收聽到文本框editingChanged事件,而不是didEndEditing

@IBAction func editingChanged(sender: AnyObject) { 
    if usernameField.text != "" && passwordField.text != "" { 
     loginButton.enabled = true 
    } else { 
     loginButton.enabled = false 
    } 
} 

然後只需勾上兩個textFields editingChanged通過代碼或接口生成器。

+0

感謝您的想法!我用工作代碼做了一個答案。 – Azer

0

,你可以做這樣的:

默認情況下禁用loginbutton因爲文本框是空的登錄屏幕出現時......

,並實現以下文本框的委託方法:

斯威夫特

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 
    if textField == usernameField { 
     loginButton.enabled = ((textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string).characters.count > 0 && passwordField.text?.characters.count > 0) 
    } else if textField == passwordField { 
     loginButton.enabled = ((textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string).characters.count > 0 && usernameField.text?.characters.count > 0) 
    } 

    return true 
    } 

ObjC

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    if (textField == self.usernameField) { 
    self.loginButton.enabled = ([textField.text stringByReplacingCharactersInRange:range withString:string].length > 0 && self.passwordField.text.length > 0); 
    } else if (textField == self.passwordField) { 
    self.loginButton.enabled = ([textField.text stringByReplacingCharactersInRange:range withString:string].length > 0 && self.usernameField.text.length > 0); 
    } 

    return YES; 
} 
+0

這不是Swift – Moriya