【问题标题】:how to check that if text fileds values and show alert and empty the textfield in iphone如何检查文本字段的值并显示警报并清空iphone中的文本字段
【发布时间】:2012-05-30 19:30:31
【问题描述】:

我正在输入值 textfiled 我希望如果它是正确的值那么它可以显示警报并使文本字段为空。这样用户可以输入正确的值我已经尝试了很多方法但我没有解决它。

  -(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];

     }
  }

【问题讨论】:

  • 你什么时候运行这段代码?
  • 我在 textfield 的 textDidChange 方法中运行此代码,因为我只想输入上面显示的所需输入
  • 你应该检查我的答案here
  • @Filoo 你能在我的代码中编辑如何做到这一点,如果可以的话
  • @Alexander 我已经编辑了我的问题,看看我在哪里使用这个代码

标签: iphone xcode


【解决方案1】:

对于这个特殊的问题,我会改用UIStepper 控件:

stepper.minimumValue = 1.0f;
stepper.maximumValue = 3.0f;
stepper.stepValue = 0.5f;

步进控件如下所示:

【讨论】:

  • 好主意,这可能是最好的方法
【解决方案2】:

@james 如果你只有一个文本字段,那么你可以实现这个代码:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
 NSString *strText=textField.text;
    if ([strText isEqualToString:@"1"]||[strText isEqualToString:@"1.5"]||[strText isEqualToString:@"2"]||[strText isEqualToString:@"2.5"]||[strText isEqualToString:@"3"]) 
    {
        appDelegate.clinicalMarkup=strText;
        [textField resignFirstResponder];
    }
    else
    {
        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];

    }
return YES;
}

【讨论】:

  • 如果我不使用 -(BOOL) 并使用我所做的方法会怎样?
  • 我发布的方法是委托,当单击文本字段的返回按钮和您发布的方法时,它将被调用,因为我需要知道您在哪里调用那个方法
  • 它工作正常,但是当我编写该语句时,我需要清空 else 语句中的文本框,然后应用程序崩溃
  • @james 你在 else 块里写了什么,请贴出这行代码
  • @james textField.text = @"";这是您发布的线路吗?
【解决方案3】:

设置您的委托

clinicMarkupTextField.delegate = self;
clinicMarkupTextField.returnKeyType = UIReturnKeyDone;

试试下面的代码

-(BOOL)textFieldShouldReturn:(UITextField *)textField{

    if(clinicMarkupTextField == textField) //only if u have more then 1 text field
    {
        NSString*test=textField.text;

    if([test isEqualToString:@"1"]){
            NSString*value=@"1";
        appDelegate.clinicalMarkup=value;
     }

         ---SNIP---             

        else if([test length] >=3 || [test floatValue] > 3 || [test floatValue] <1 )  {

         //if all condition fails 
         textField.text = @"";

             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];

          }
       }
 return yes;

    }

【讨论】:

  • 我的代码方法也一样,我只应用在一个文本字段上,所以我的代码为什么不起作用
  • 我的想法只是清除 alertview show simple 上的文本框内容
猜你喜欢
  • 1970-01-01
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多