【问题标题】:iPhone: Resign Keyboard with Done button action with XIBiPhone:使用 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 的解决方案也有利于更细粒度的控制。
  • 谢谢亚历克斯,请在下面查看我的答案

标签: iphone uikeyboard


【解决方案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 在这里是正确的,你也可以在另一篇文章中看到。 stackoverflow.com/questions/389825/dismiss-iphone-keyboard
  • 不,没有。 UITextField 有一个textFieldShouldReturn 方法,但UITextView 没有类似的方法。请检查你的事实。
【解决方案4】:

在具有焦点的文本视图上调用 resignFirstResponder 以关闭键盘。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-19
    • 2016-01-08
    • 1970-01-01
    • 2012-09-15
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    相关资源
    最近更新 更多