如何使uitextview“完成”按钮wistfirstresponder?
-
09-10-2019 - |
题
我试图使我的可编辑 UITextView
辞职键盘(resignFirstResponder
)当用户点击“完成”时。用一个 UITextField
, ,我已经能够使用以下代码执行此操作:
- (IBAction)doneEditing:(id)sender {
[sender resignFirstResponder];
}
...然后将其附加到相关 UITextField
在接口构建器中,该动作“确实以退出为止”。
但是,有一个 UITextView
, ,我似乎无法访问“ DID DID在退出”动作中。关于如何实现这一目标有什么建议?
解决方案
新答案
从您的角度来看,您将拥有一个连接到下面的IBACTION的Uibarbutton(“完成”):
- (IBAction)doneEditing:(id)sender {
[textView resignFirstResponder];
}
在您的.h文件中定义的文本视图是您的TextView的位置,并在故事板或.xib文件中连接。像这样:
@property (retain, nonatomic) IBOutlet UITextView *textView;
旧答案
检查以下内容:
- 是否在.h中指定了UITEXTVIEWDELEGATE
- 实现uitextview的代表方法:textviewshoulddendeding,返回是
- 确保您的.m(控制器)是IB中UITEXTVIEW的代表
- 辞职现在应该起作用。
其他提示
公认的答案对我不起作用。相反,应像这样调用以下委托方法:
- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if([text isEqualToString:@"\n"]){
[textView resignFirstResponder];
return NO;
}else{
return YES;
}
}
将其粘贴到您分配的课堂中,为UITEXTVIEW代表,它将起作用。
您可以实现 UITextViewDelegate
并在Swift 4中等待“ n”:
myTextView.delegate = self
// ...
extension MyViewController : UITextViewDelegate {
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if text == "\n" {
textView.resignFirstResponder()
return false
}
return true
}
}
为了完成完成按钮,请拆除键盘和 resignFirstResponder
您必须实现委托方法。
在您的.h实施UitextfieldDelegate中
@interface YourViewController : UIViewController <UITextFieldDelegate>
然后在您的.m中实现textfieldshoulderturn
-(BOOL) textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; }
不要忘记将Uitextfield的代表链接到文件的所有者(非常重要)
不隶属于 StackOverflow