iPhone:使用 XIB 退出键盘并完成按钮操作
Posted
技术标签:
【中文标题】iPhone:使用 XIB 退出键盘并完成按钮操作【英文标题】:iPhone: Resign Keyboard with Done button action with XIB 【发布时间】:2011-01-20 17:44:59 【问题描述】:嗨,我正在开发 UITextview
如何退出键盘,键盘“完成按钮”后点击Action,即XIB
谢谢
【问题讨论】:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange: (NSRange)range replacementText:(NSString *)text // 添加的任何新字符都作为“text”参数传入 if( [text isEqualToString:@"\n"]) // 确保使用 "isEqualToString" 消息测试是否相等 [textView resignFirstResponder]; // 返回 FALSE 以便不添加最后的 '\n' 字符 return NO; // 对于任何其他字符返回 TRUE 以便将文本添加到视图中返回 YES; //检查它是否适合你 如果您的评论是您已经结束的解决方案,您应该将其作为答案发布并标记,否则请选择以下答案之一。我投票给@Robotic_Cat,因为他的解决方案对我有用。不过,@WrightCS 的解决方案也有利于更细粒度的控制。 谢谢亚历克斯,请在下面查看我的答案 【参考方案1】:您好,如果您想回答,请使用键盘上的默认“完成”按钮退出 UITextview 的键盘,那么这就是答案
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text
// Any new character added is passed in as the "text" parameter
if([text isEqualToString:@"\n"])
// Be sure to test for equality using the "isEqualToString" message
[textView resignFirstResponder];
// Return FALSE so that the final '\n' character doesn't get added
return NO;
// For any other character return TRUE so that the text gets added to the view
return YES;
我按照这个辞职了 UITextview 的键盘,如果有任何问题告诉我
谢谢
【讨论】:
对于 UITextField 使用这个代替: - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)text if([text isEqualToString:@"\n" ]) [textField resignFirstResponder];返回否; 返回是; 【参考方案2】:创建一个 IBAction
并在 IB 中将其连接到 UITextfield
的 DidEndOnExit
事件。然后拨打[textViewName resignFirstResponder]
让键盘消失。
或者,尝试在 IBAction 中使用 [self.view endEditing:YES]
。
【讨论】:
这实际上是原始发布者实际问题的唯一答案,尽管其他方法也会关闭键盘。原始发帖人要求在笔尖中提供一种方式来连接按下“完成”按钮时要执行的操作。这个答案解释了如何做到这一点。 这似乎比作为答案接受的解决方案更好,即检查每个字符输入【参考方案3】:要将操作分配给键盘的Done
按钮:
在这些示例中,myTextView
是一个 UITextView
,在标头中定义并在 Interface Builder 中连接。
-(BOOL)textViewShouldReturn:(UITextView*)textView
if (textView == myTextView)
[textView resignFirstResponder];
return YES;
要将其分配给外部按钮:
确保在标题中定义 IBAction
,然后在 Interface Builder 中,将按钮连接到 touchUpInside:
的此操作
.h
-(IBAction)dismissKeyboard:(id)sender;
.m
-(IBAction)dismissKeyboard:(id)sender
[myTextView resignFirstResponder];
【讨论】:
没有这样的委托方法:-(BOOL)textViewShouldReturn:(UITextView*)textView 我必须纠正你。有这样一种方法,WrightCS 在这里是正确的,你也可以在另一篇文章中看到。 ***.com/questions/389825/dismiss-iphone-keyboard 不,没有。UITextField
有一个textFieldShouldReturn
方法,但UITextView
没有类似的方法。请检查你的事实。【参考方案4】:
在具有焦点的文本视图上调用 resignFirstResponder
以关闭键盘。
【讨论】:
以上是关于iPhone:使用 XIB 退出键盘并完成按钮操作的主要内容,如果未能解决你的问题,请参考以下文章
iPhone 键盘、完成按钮和 resignFirstResponder