2

UITextView が空になったときにイベントを起動しようとしています。テキストビューが空になったときにアクションをトリガーする方法に問題があります。つまり、UITextView が空になるたびに、次の func が実行されます

 -(void)textViewIsEmpty
 {
      NSLog(@"Text View Is Empty");
 }

textView が空であることを自動的に検出するために問題が発生しています。前もって感謝します。

4

5 に答える 5

2

この質問が出されてから状況が変わった可能性がありますが、似たようなことに取り組んでいたので、回答を提供したいと思いました。

Xcode 5 以降、実際に必要なのはメソッドを作成し、それをEditing ChangedSent Event に関連付けるだけです。

私のクラスでは、IBAction次を返すメソッドを作成しました。

- (IBAction)priceFieldEdited:(id)sender {
    [self refreshFetchedResultsAndTable];
}

次に、クラスにドラッグして右クリックし、メソッドを選択するだけで済みました。

テキスト フィールドをクラスのメソッドに関連付ける例。

于 2014-01-22T04:59:40.933 に答える
1

textFieldDidEndEditingデリゲートメソッドを使用します。

- (void)textFieldDidEndEditing:(UITextField *)textField
{
   if([textField.text stringByReplacingOccurrencesOfString:@" "
                                                        withString:@""].length >0)
      NSLog(@"Text Field Is Empty");
      //or perform selector textFieldIsEmpty
}

UITextFieldTextDidChangeNotification名の通知オブザーバーを追加します。

[[NSNotificationCenter defaultCenter] addObserver:self
                                     selector:@selector(textFieldChanged:)
                                         name:UITextFieldTextDidChangeNotification
                                       object:self.yourTextField];

セレクターは次のようになります。

-(void)textFieldChanged:(NSNotification*)notification
{
    UITextField *txt = (UITextField *)[notification object];
     if([txt.text stringByReplacingOccurrencesOfString:@" "
                                                        withString:@""].length >0)
      NSLog(@"Text Field Is Empty");
}

編集:不要な場合は通知を削除します:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:nil];
于 2012-10-12T06:40:39.267 に答える
1

UITextFieldTextDidChangeNotificationnameの通知オブザーバーを追加します。

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(textFieldDidChanged:)
                                             name:UITextFieldTextDidChangeNotification
                                           object:self.yourTextField];

textFieldDidChanged:テキストフィールドが変更されたときのアクションを管理するカスタム メソッドです。そこでテキストフィールドの長さを判断できます。


編集:

のサンプル コードtextFieldDidChanged::

- (void)textFieldDidChanged:(NSNotification *)notification {
  if (self.yourTextField.length)
    return;
  [self textFieldIsEmpty];
}
于 2012-10-12T06:36:21.590 に答える
0

これを使って:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    NSLog(@"RETURN ON KEYBORAD - PRESSED");

    if ( ([ textField.text length ] == 0) | ([[textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ] length]  == 0))
    {
        [self textFieldIsEmpty];
        return YES;
    }
}
于 2012-10-12T06:42:37.550 に答える
0
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSRange textFieldRange = NSMakeRange(0, [textField.text length]);
    if (NSEqualRanges(range, textFieldRange) && [string length] == 0) {
        // Game on: when you return YES from this, your field will be empty
    }
    return YES;
}

このメソッドが戻るまでフィールドが空にならないことに注意すると便利です。そのため、ここで中間状態を設定textFieldDidEndEditing:し、ユーザーがフィールドを空にしたことを知るために使用することをお勧めします。

これをに追加することもできます- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;

于 2012-10-12T06:32:20.563 に答える