2013-11-26 190 views
0

我在我的TableViewCell 2 TextFields。UITextField檢查輸入

對於第二個TextField,我需要一個確認來啓用一個按鈕。

使用此代碼,以確定是否確認按鈕應啓用I'm,但它不工作:

-(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    textField = self.installDeviceCell.passWordTextFieldOutlet; 
    [textField addTarget:selfaction:@selector(checkTextField:)forControlEvents:UIControlEventEditingChanged]; 
    return YES; 
} 

-(void)checkTextField:(id)sender 
{ 
    UITextField* textField = (UITextField*)sender; 
    if ([textField.text length] < 7) { 
     self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = NO; 
    }else if ([textField.text length] > 7){ 
     self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = YES; 
    }else{ 
     self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = YES; 
    } 
} 
+0

你設置文本字段的委託? [textField setDelegate:self] –

回答

0

你分配給你的UITextField您UITextFieldDelegate時被instatiated呢?如果不分配它,UITextField的委託方法將不會被調用。

還要確保在委託的頭文件中指定了接口的委託,例如

@interface MyDelegate <UITextFieldDelegate> 
// ... 
@end 

最後你對文本的計算有點奇怪。你可以通過shouldChangeCharactersInRange完成所有的計算。您也不需要添加目標或覆蓋textField屬性。只需檢查replacementString是否大於7個字符。您的最終代碼可能是這個樣子:

-(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if ([string length] < 7) { 
     self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = NO; 
    } else { 
     self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = YES; 
    } 
    return YES; 
} 

參見代表團這個偉大的答案更多的信息:https://stackoverflow.com/a/626946/740474

+0

是的,UITextFieldDelegate被實例化 – Andy

+0

在這種情況下,這可能是您如何進行計算的問題。查看我編輯的答案以獲取更多詳細信當'textField:shouldChangeCharactersInRange:replacementString:delegate'方法被觸發並且確保它的行爲如預期的那樣時(或者被調用),也可以嘗試單步調試調試器, – alexgophermix