2011-06-05 45 views
0

你好我使用到下面的代碼,以保持2 UIButtons停用,直到有四個UITextField小號textFieldDidEndEditing替代

- (void)textFieldDidBeginEditing:(UITextField *)textField { 


if (([brand.text length] >0) && ([qty.text length] >0) && ([size.text length] >0) && ([price.text length] >0)) { 
    [calcOneButton setEnabled:YES]; 
    [calcTwoButton setEnabled:YES]; 

} 
if (([brand.text length] ==0) || ([qty.text length] ==0) || ([size.text length] ==0) || ([price.text length] ==0)){ 

    [calcOneButton setEnabled:NO]; 
    [calcTwoButton setEnabled:NO]; 
} 

} 

- (void)textFieldDidEndEditing:(UITextField *)textField { 

int ebtl = [brand.text length]; 
int eqtl = [qty.text length]; 
int estl = [size.text length]; 
int eptl = [price.text length]; 
NSLog(@"ebtl = %d eqtl = %d estl = %d eptl = %d",ebtl, eqtl, estl, eptl); 

if (([brand.text length] ==0) || ([qty.text length] ==0) || ([size.text length] ==0) || ([price.text length] ==0)){ 
    [calcOneButton setEnabled:NO]; 
    [calcTwoButton setEnabled:NO]; 
} 
if (([brand.text length] >0) && ([qty.text length] >0) && ([size.text length] >0) && ([price.text length] >0)) { 
    [calcOneButton setEnabled:YES]; 
    [calcTwoButton setEnabled:YES]; 
} 

數據}

我的問題是textFieldDidEndEditing不叫,直到用戶點擊遠離textField。這需要點擊屏幕,然後按鈕有一種方法來避免這種情況,所以按鈕將立即啓用?

回答

2

只有當用戶從textField中跳出時,該按鈕纔會變爲活動狀態。如果使用彈出的普通鍵盤,請使用鍵盤上的DONE按鈕來清除鍵盤,然後在鍵盤自行退出時寫入IBAction,然後啓用按鈕。

- (BOOL) textFieldShouldReturn:(UITextField *)textField 
{ 
[textField resignFirstResponder]; //enable your buttons after this 
return 1; 
} 

或使用IBAction爲:

-(IBAction) textFieldFinishedDone: (id) sender; // enable your buttons after this 

按鈕必須活躍起來,只有當所有文本框都充滿了吧?你可以這樣做。 註釋掉上面寫的兩個函數。使用IBAction,每當您按下DONE並放棄鍵盤時,請檢查所有的textFields的狀態。使用if-else塊,當所有的textFields完成時,讓你的按鈕出現。

+0

,其他3都是數字鍵盤。 我可以將操作鏈接到在事件屬性字段中編輯已更改或值已更改嗎? – sjbuchanan007 2011-06-05 15:59:14

+0

使用本教程爲數字小鍵盤創建一個返回鍵。 http://www.neoos.ch/news/46-development/54-uikeyboardtypenumberpad-and-the-missing-return-key – Legolas 2011-06-05 16:01:47

+0

對不起,我沒有正確閱讀你的問題;當所有的textFields完成後,按鈕必須處於活動狀態? – Legolas 2011-06-05 16:11:58

0

爲了獲得最佳用戶體驗,我會建議在textField:shouldChangeCharactersInRange:replacementString:中執行行爲總是返回YES。

也,在所述方法的邏輯以上是多餘的, 優選的實現:

- (void)textFieldDidBeginEditing:(UITextField *)textField { 

    if (([brand.text length] >0) && 
     ([qty.text length] >0) && 
     ([size.text length] >0) && 
     ([price.text length] >0)) { 
    [calcOneButton setEnabled:YES]; 
    [calcTwoButton setEnabled:YES]; 
    } else { 
    [calcOneButton setEnabled:NO]; 
    [calcTwoButton setEnabled:NO]; 
    } 

} 
我只使用上的字段中的一個普通鍵盤
+0

感謝您的回覆,我已經在'textField:shouldChangeCharactersInRange:replacementString:'下做了很多事情,所以我現在已經鏈接到使用事件編輯更改屬性的操作。 – sjbuchanan007 2011-06-05 16:34:16