2

その下にテーブルがあり、選択するアイテムのリストを表示するUITextFieldがあります(ドロップダウンリストに似ています)。たとえば、テキストフィールドに 2 と入力すると (テキストフィールドには年の値があります)、表には 2 を部分文字列として含むすべての文字列が表示されます。したがって、2000 と入力すると、一致する文字列 2000 のみが表に表示されます。

テキストフィールドに 2000 と入力し終わったら、メソッドを呼び出したいと思います。すべて正常に動作しますが、4桁すべての入力が終了したときにのみこのメソッドを呼び出したいのですが、ここでは4桁目を入力しようとするとメソッドが呼び出されます。

2000 と入力すると、3 番目のゼロを入力した後に shouldChangeCharactersInRange が Yes を返した後にメソッドが呼び出されます。

これが私のコードです:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString *substring = [NSString stringWithString:textField.text];
    substring = [substring stringByReplacingCharactersInRange:range withString:string];

    //if _filteredarray count==1 and substring and _filteredarray object at index 0 matches then call a method here

     return YES;
}
4

1 に答える 1

3

Try this

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{
     NSString *substring = [NSString stringWithString:textField.text];
     substring = [substring stringByReplacingCharactersInRange:range withString:string];
     if(substring.length == 4)
     {
          [textField resignFirstresponder];
          [self performSelector:@selector(functiontocall)withObject:nil afterDelay:0.8];
     }
     return YES;
}

the above code may give u an idea

if u enter fourth letter of 2000, then the keyboard will disappear(if u want u can add it, which will avoid further entering values to textfield), then u can see the third zero for 0.8 seconds and the function u need to call will be called.

于 2013-03-07T09:32:22.497 に答える