在iPhone应用程序中的UIAlertView弹出窗口后清空文本字段值
我有一个文本字段。如果它有错误的值,那么它可能会显示警报值,并使文本字段为空,但当我使用:在iPhone应用程序中的UIAlertView弹出窗口后清空文本字段值,iphone,ios,xcode,uitextfield,Iphone,Ios,Xcode,Uitextfield,我有一个文本字段。如果它有错误的值,那么它可能会显示警报值,并使文本字段为空,但当我使用: textField.text = @""; alertView之后,我的应用程序挂起并崩溃,EXC_访问错误 但是当我使用textField.text=@1;然后它工作正常,但我希望文本字段为空。我该怎么做 -(void)textFieldTextDidChangeClinicMarkup:(UITextField*)tf{ NSString*test=clinicMarkupTextFiel
textField.text = @"";
alertView之后,我的应用程序挂起并崩溃,EXC_访问错误
但是当我使用textField.text=@1;然后它工作正常,但我希望文本字段为空。我该怎么做
-(void)textFieldTextDidChangeClinicMarkup:(UITextField*)tf{
NSString*test=clinicMarkupTextField.text;
if([test isEqualToString:@"1"]) {
NSString*value=@"1";
appDelegate.clinicalMarkup=value;
}
else if([test isEqualToString:@"1.5"]){
NSString*value=@"1.5";
appDelegate.clinicalMarkup=value;
}
else if([test isEqualToString:@"2"]){
NSString*value=@"2";
appDelegate.clinicalMarkup=value;
}
else if([test isEqualToString:@"2.5"]){
NSString*value=@"2.5";
appDelegate.clinicalMarkup=value;
}
else if([test isEqualToString:@"3"]){
NSString*value=@"3";
appDelegate.clinicalMarkup=value;
}
else if([test length] >=3 || [test floatValue] > 3 || [test floatValue] <1 ) {
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"Clinic Markup can only be $1, $1.5, $2, $2.5 and $3 " delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
clinicalMArkupTextfield.text=@"";
}
}
可能会调用此函数,因为您已将其注册为文本更改通知
clinicalMArkupTextfield.text=@"";
当您通过上行指定空白值时,由于文本更改通知,将再次调用此函数。现在,没有一个条件是满足的,所以它将再次成为最后一个if语句。它可能陷入无限循环,并造成可能的崩溃
否则,似乎没有问题。此函数可能会被调用,因为您已将其注册为文本更改通知
clinicalMArkupTextfield.text=@"";
当您通过上行指定空白值时,由于文本更改通知,将再次调用此函数。现在,没有一个条件是满足的,所以它将再次成为最后一个if语句。它可能陷入无限循环,并造成可能的崩溃
否则,似乎没有什么问题。使用textfield委托方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *finalString = [textfield.text stringByReplacingCharactersInRange:range withString:text];
if([finalString isEqualToString:@"anything"])
{
// Show alertBox......
}
return YES;
}
使用textfield委托方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *finalString = [textfield.text stringByReplacingCharactersInRange:range withString:text];
if([finalString isEqualToString:@"anything"])
{
// Show alertBox......
}
return YES;
}
使用textfield委托方法。shouldChangeCharacters在创建文本字段的代码范围内,将其委托属性指定给self。textField.delegate=self;现在,添加上面的函数,并在其中使用。它不起作用,我在其他文本文件中使用相同的方法,它工作正常,正如我在上面的代码中使用textfield委托方法所做的一样。shouldChangeCharacters在创建文本字段的代码范围内,将其委托属性指定给self。textField.delegate=self;现在,添加上面的函数并在其中使用它。它不起作用,我正在对其他文本文件使用相同的方法。它与我在上面代码中所做的一样工作正常。然后您应该使用:-[textfield.text retain]。可以在何处使用此重新存储请告诉我InicalMarkupTextField.text=@;[clinicalMArkupTextfield.text];那么你应该使用:-[textfield.text retain]。在哪里可以使用这个reatain?请告诉我linicalmarkuptextfield.text=@;[clinicalMArkupTextfield.text];当用户确认数据时,为什么不验证数据。我的意思是当调用textFieldDidEndEditing时?如何确认?请告诉我,当用户确认数据时,为什么不验证数据。我的意思是当调用textFieldDidEndEditing时?如何确认,请告诉我