Iphone 使用UITextView时,如何对键盘上的“完成”按钮作出反应?

Iphone 使用UITextView时,如何对键盘上的“完成”按钮作出反应?,iphone,Iphone,UITextView不从UIControl继承,因此不可能存在addTarget:forControlEvent:方法。我曾经注册一个操作方法,以便在发生uicontrol事件编辑DiEndonext时退出第一响应者 如何使用UITextView实现这一点?是否有一些代理+协议我必须执行,这样我才能使键盘离开?是UITextView有一个代理协议你应该执行。委托协议自然命名为UITextViewDelegate。通过浏览文档,您应该注意到存在一种模式;对于具有委托协议的任何类Foo,协议始终命名

UITextView不从UIControl继承,因此不可能存在addTarget:forControlEvent:方法。我曾经注册一个操作方法,以便在发生uicontrol事件编辑DiEndonext时退出第一响应者


如何使用UITextView实现这一点?是否有一些代理+协议我必须执行,这样我才能使键盘离开?

UITextView
有一个代理协议你应该执行。委托协议自然命名为
UITextViewDelegate
。通过浏览文档,您应该注意到存在一种模式;对于具有委托协议的任何类
Foo
,协议始终命名为
foodegate
,没有例外

现在,正如James指出的那样,您可以使用
UITextView
s委托截取文本更改并关闭键盘。但是,我不鼓励您这样做,因为它违反了人机界面准则。
UITextView
用于编辑包含多行文本的文本,截取enter键表示不建议换行

如果您想要一个只有一行文本的文本字段,或者需要按enter键退出,则应改用
UITextField
,该字段还具有委托协议
UITextField delegate
。此协议有一种方法可满足您的需要:

-(BOOL)textFieldShouldReturn:(UITextField*)textField {
    [textField resignFirstResponder];
    return NO;
}


这一点很好,但是当您不能使用ENTER键进行此操作时,如何正式完成对UITextView的编辑?在我的例子中,enterkex作为DONE按钮显示为蓝色。如果我将其更改为Enter键,那么如何关闭该键盘?您可以使用
-[UITextView resignFirstResponder]
关闭键盘。只需使用返回键以外的其他用户操作即可。您可以在导航栏中添加“完成”按钮,或在
UITextField
UITextField
inputView
上添加“完成”按钮。例如,在编辑表单时,Safari使用该视图在键盘上方添加额外控件。更正:您应该使用
inputAccessoryView
在默认键盘上方添加视图
inputView
用于一起替换默认键盘。嘿,那是Cooool人,从来没有听说过inputAccessoryView!!!这是我现在最喜欢的UIKit功能!凉的