使用UITextView时如何对键盘的DONE按钮作出反应?

Pro*_*ber 2 iphone

UITextView不从UIControl继承,因此没有addTarget:forControlEvent:方法可能.当UIControlEventEditingDidEndOnExit发生时,我曾经注册一个动作方法来辞职第一响应者.

我怎么能用UITextView做到这一点?是否有一些代理+协议我必须实现,所以我可以让键盘消失?

Pey*_*loW 5

是的,UITextView您应该实施委托协议.委托协议自然命名UITextViewDelegate.您应该通过浏览文档来注意到存在模式; 对于任何Foo具有委托协议的类,协议始终被命名FooDelegate,没有例外.

现在你可以像James指出的那样使用UITextViews委托拦截文本更改并关闭键盘.但是,我不鼓励你这样做,因为它违反了人机界面指南.A UITextView用于编辑具有多行文本的文本,截取输入键表示不建议使用elsa而不是换行符.

如果您希望文本字段只有一行文本,或者被输入键删除,那么您应该使用a UITextField,它也有一个委托协议UITextFieldDelegate.该协议有一个适合您想要的方法:

-(BOOL)textFieldShouldReturn:(UITextField*)textField {
    [textField resignFirstResponder];
    return NO;
}
Run Code Online (Sandbox Code Playgroud)