我用左
[self.assuntoTextField addTarget:self action:@selector(testarSeTemTexto) forControlEvents:UIControlEventEditingChanged];
获取UITextFields
的文本值,但我不能对UITextViews
执行相同的操作,如何在用户仍在编辑TextView的情况下执行此操作?
答案 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