1

Textfield の「valueDidChange」イベントをキャッチする方法はありますか? oO

UITextField を持つ modalView があります。

UITextField が空の場合、NavigationBar の「完了」ボタンを無効にし、テキストが入力されている場合は有効にする必要があります。

現時点では、「textFieldShouldReturn」メソッドを使用してこれを達成する唯一の方法です。これは機能しますが、使い勝手が悪いだけです。

文字が入力または削除されるたびに要件を確認する方法はありませんか?

4

3 に答える 3

2

実装し-textField:shouldChangeCharactersInRange:replacementString:ます。

于 2010-04-04T14:45:22.423 に答える
2

誰かが気になる場合: 解決策は、コントロール イベント "EditingChanged" を addTarget:selector:controlevent: ;) でキャッチすることです。

于 2010-04-09T19:40:30.357 に答える
2

テキストが含まれている場合にのみ有効になるUITableViewControllerwithがあります。これは、ユーザーが何かを入力する前に「完了」を押さないようにする方法です。これはまさにあなたが探しているものだと思います。これが私がそれをした方法です:self.editButtonItemUITextField.textUITextField

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    // Logs for seeing patterns, if you so please
    NSLog(@"replacementString length = %d",string.length);
    NSLog(@"textField.text = %@",textField.text);
    NSLog(@"range = (%d,%d)\n\n",range.location,range.length);

    if (string.length) {
        self.editButtonItem.enabled = YES;
    } else if (!string.length && textField.text.length == range.length) {
        self.editButtonItem.enabled = NO;
    }
    return YES;
}

それが役立つことを願っています

于 2012-03-21T06:02:49.190 に答える