4

私は値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];

     }
  }
4

3 に答える 3

3

この特定の問題については、UIStepper代わりにコントロールを使用します。

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

ステッパー コントロールは次のようになります。
ここに画像の説明を入力

于 2012-05-30T09:45:37.337 に答える
2

@jamesテキストフィールドが1つしかない場合は、次のコードを実装できます。

- (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;
}
于 2012-05-30T09:58:48.950 に答える
0

デリゲートを設定する

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;

    }
于 2012-05-30T09:45:24.140 に答える