大家都知道,好多app登錄注冊時,當textField有輸入時,按鈕顏色會高亮,沒有輸入,或者刪除所有輸入時,按鈕又變為灰色;其實這樣可以直接在textField的一個代理方法中進行判斷,直接上代碼吧。
方法一:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (string.length == 0) {
if (self.passWordTextField.text.length - 1 == 0) {
self.ensureBtn.backgroundColor = [UIColor grayColor];
}
else self.ensureBtn.backgroundColor = [UIColor redColor];
}
else self.ensureBtn.backgroundColor = [UIColor redColor];
return YES;
}
這里只寫了一個TextField時的判斷,
有疑問的可能是self.passWordTextField.text.length - 1 == 0為啥還需要判斷的原因是,當你輸入一些字符時,只要刪除 ,string.length == 0,只有增加時string.length == 1。
為啥減一的原因是,當你刪除最后一個字符時,按下按鈕,self.passWordTextField.text.length還保存是1的狀態,因此進行了減一操作,
方法二:
第二種思路:和按鈕一樣,給文本框添加事件的方式.因為文本框也是繼續UIControl.所以能夠直接添加.
給賬號添加事件
[self.accontTextFaddTarget:selfaction:@selector(textChange)forControlEvents:UIControlEventEditingChanged];
給密碼添加事件
都讓它們響應一個方法
[self.pwdTextFaddTarget:selfaction:@selector(textChange)forControlEvents:UIControlEventEditingChanged];
}
?xml version="1.0" encoding="UTF-8"?
第二種思路:
當文本框開始編輯時調用,這樣可以時刻堅聽文本框的內容
- (void)textChange{
賬號和密碼都有值時,登錄按鈕才能夠點擊.
第一種判斷方法:
/***
if (self.accontTextF.text.length && self.pwdTextF.text.length) {
self.loginBtn.enabled = YES;
}else{
self.loginBtn.enabled = NO;
}
*/
第二種判斷方法
self.loginBtn.enabled=self.accontTextF.text.length&&self.pwdTextF.text.length;
}
第一次寫東西,希望大家指正,個人水平很菜。也寫的很麻煩。