UITextView が空になったときにイベントを起動しようとしています。テキストビューが空になったときにアクションをトリガーする方法に問題があります。つまり、UITextView が空になるたびに、次の func が実行されます
-(void)textViewIsEmpty
{
NSLog(@"Text View Is Empty");
}
textView が空であることを自動的に検出するために問題が発生しています。前もって感謝します。
UITextView が空になったときにイベントを起動しようとしています。テキストビューが空になったときにアクションをトリガーする方法に問題があります。つまり、UITextView が空になるたびに、次の func が実行されます
-(void)textViewIsEmpty
{
NSLog(@"Text View Is Empty");
}
textView が空であることを自動的に検出するために問題が発生しています。前もって感謝します。
この質問が出されてから状況が変わった可能性がありますが、似たようなことに取り組んでいたので、回答を提供したいと思いました。
Xcode 5 以降、実際に必要なのはメソッドを作成し、それをEditing Changed
Sent Event に関連付けるだけです。
私のクラスでは、IBAction
次を返すメソッドを作成しました。
- (IBAction)priceFieldEdited:(id)sender {
[self refreshFetchedResultsAndTable];
}
次に、クラスにドラッグして右クリックし、メソッドを選択するだけで済みました。
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];
UITextFieldTextDidChangeNotification
nameの通知オブザーバーを追加します。
[[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];
}
これを使って:
- (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;
}
}
-(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;