我有4个UITextField用于保持2个UIButton禁用,直到所有4个字段都输入了数据。到目前为止我有以下代码
- (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 {
}
}
我有很多问题: -
任何人都可以帮助解决这些问题吗?
记录字段长度的代码如下: -
#define MAXLENGTH 5
#define MAXQTY 3
#define MAXSIZE 4
#define MAXBRAND 10
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (textField == brand) {
int lengtha = [brand.text length] ;
NSLog(@"lenghta = %d",lengtha);
if (lengtha >= MAXBRAND && ![string isEqualToString:@""]) {
brand.text = [brand.text substringToIndex:MAXBRAND];
return NO;
}
对于所有4个字段,它遵循相同的格式,但是当我输入字符时,NSlog结果为0,然后是第二个字符的1,依此类推。
答案 0 :(得分:0)
只需使用其他委托方法。
使用:textFieldDidEndEditing:
就像Krypton在评论中告诉你的那样
或在输入时直接使用textField:shouldChangeCharactersInRange:replacementString:
启用/禁用。
textField:(UITextField*)aTextField shouldChangeCharactersInRange:(NSRange) aRange replacementString:(NSString*)aRepString
{
NSString *newStr = [aTextField.text stringByReplacingCharactersInRange:aRange withString:aRepString];
if([newStr length]>0 && /*otherStringLength > 0*/)
//enable
else
//disable
return YES;
}
但我认为最常见的方法是使用didEndEditing
- 方法