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 中将其连接到 UITextfieldDidEndOnExit 事件。然后拨打[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 普通键盘中的完成按钮

iPhone 键盘、完成按钮和 resignFirstResponder

如何为 iPhone 5 显示器加载 xib

在 iPhone 应用程序的键盘上添加“完成”和“换行”按钮

iOS开发——OC篇&纯代码退出键盘

您的二进制文件未针对 iPhone 5 进行优化,将 launchscreen.xib 用于 iOS 8 目标