2

嘿伙计们,我正在尝试在 UITextView 变空时启动一个事件。我有一个问题,当 textview 变空时如何触发动作。我的意思是每当 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

为名称添加通知观察者UITextFieldTextDidChangeNotification

[[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 回答
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 回答
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 回答
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 回答