如何在用户编辑时获取UITextView文本

时间:2014-01-07 18:35:57

标签: ios objective-c uitextfield uitextview

我用左  [self.assuntoTextField addTarget:self action:@selector(testarSeTemTexto) forControlEvents:UIControlEventEditingChanged];

获取UITextFields的文本值,但我不能对UITextViews执行相同的操作,如何在用户仍在编辑TextView的情况下执行此操作?

2 个答案:

答案 0 :(得分:6)

如果您不需要验证并且只是想要被告知文本已被更改,只需为此UITextField分配一个代表(如果尚未执行此操作)并实现方法

- (void)textViewDidChange:(UITextView *)textView
{
    NSString *text = textView.text;
}

如果要实现某种验证,那么使用正确的方法是

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    NSString *finalTextWillBe = [textField.text stringByReplacingCharactersInRange:range
                                                                        withString:string];

    //validation comes here... 

    if (final text passes your validation) 
    {
        return YES;
    }
    else
    {
        return NO;
    }
}

注意:如果您使用多个文本字段,则必须以某种方式识别源。通过设置其tag或将引用(ivar,property ...)保存到文本字段。

答案 1 :(得分:2)

使viewController成为textView的委托,如下所示:

@interface ViewController : UIViewController<UITextViewDelegate>

这是你的委托方法:

- (void)textViewDidChange:(UITextView *)textView

有关详细信息,请参阅this