9

テキスト フィールド デリゲート メソッド「shouldChangeCharactersInRange」を使用していますが、ユーザーが文字を削除しているか、文字を入力しているかを確認する方法があるかどうか知りたいですか? 誰でも知っていますか?ありがとう。

4

3 に答える 3

28
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (range.length > 0)
    {
         // We're deleting
    }
    else
    {
        // We're adding
    }
}
于 2011-03-04T06:14:07.757 に答える
5

ロジック: 削除を見つけるには、各文字タイプの後に文字列を作成する必要があります。次に、文字列がビルド文字列のサブ文字列であるかどうかを各変更で確認できます。これは、ユーザーが最後の文字を削除することを意味し、ビルド文字列が textField テキストのサブ文字列である場合ユーザーが文字を追加します。

このロジックで使用しているデリゲートメソッドを使用するか、通知を使用できます

この通知を使用して、あらゆる種類の変更を見つけることができます

これらの行を追加しますviewDidLoad

NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];

    [notificationCenter addObserver:self
                           selector:@selector (handle_TextFieldTextChanged:)
                               name:UITextFieldTextDidChangeNotification
                             object:yourTextField];

そしてこの機能を作ります

- (void) handle_TextFieldTextChanged:(id)notification {

  //you can implement logic here.
    if([yourTextField.text isEqulatToString:@""])
    {   
        //your code
    }

}
于 2011-03-04T05:44:20.987 に答える
2
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSUInteger newLength = [textField.text length] + [string length] - range.length;
    if (newLength > [textField.text length])
      // Characters added
    else
      // Characters deleted
    return YES;
}
于 2011-03-04T06:08:35.397 に答える