【问题标题】:Done key in iPhone app that closes keyboard (with UITextView)在关闭键盘的 iPhone 应用程序中完成键(使用 UITextView)
【发布时间】:2011-06-09 18:32:23
【问题描述】:

我正在开发一个 iPhone 应用程序,并且在 iPhone 应用程序中,用户正在输入 UITextView。 我想知道如何在键盘上添加完成键而不是正常的返回键,当您单击该键时,键盘会关闭。

谢谢!

【问题讨论】:

    标签: iphone objective-c keyboard-layout


    【解决方案1】:

    很简单:

    textField.returnKeyType=UIReturnKeyDone;
    

    将此添加到文本字段的委托中,以便在按下键盘时移除键盘:

    - (BOOL)textFieldShouldReturn:(UITextField *)aTextfield {
        [aTextfield resignFirstResponder];
        return YES;
    }
    

    【讨论】:

    • 是的,但这不会关闭键盘。
    • 很抱歉。将其添加到我的答案中。
    • 我认为问题是指 UITextView 而不是 UITextField
    • 这不是在回答问题。问题是关于没有委托方法 textFieldShouldReturn 的 UITextView。
    • 提问者期待 UITextView 的答案
    【解决方案2】:

    除了设置:

    textField.returnKeyType = UIReturnKeyDone;
    

    您需要将文本字段的委托设置为您的班级,并执行以下操作:

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

    如果您在 XIB 中定义了 UI,也可以从 Interface Builder 中设置 returnKeyType。另一方面, -resignFirstResponder 将确保键盘消失。它应该在 -textFieldShouldReturn: 委托方法中完成,因为当用户点击完成按钮时会调用它。

    希望这会有所帮助。

    【讨论】:

    • 他要求的是 UITextView 而不是 UITextField。
    • 也没有回答问题..问题是关于UITextView的。
    【解决方案3】:

    UITextViewDelegate 协议中没有-textViewShouldReturn: 方法。如果您希望返回(完成)键关闭键盘,最好使用 UITextField 代替,UITextView 用于编辑多行文本(因此您需要一种输入换行符的方法)。

    如果您真的想在UITextView 中按回车键时关闭键盘,您可以执行以下操作:

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
      if ([text isEqual:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
      }
      return YES;
    }
    

    【讨论】:

    • 谢谢!我需要使用 TextView 的原因是因为我正在开发的应用程序是 Twitter API。如果用户想在发布之前阅读推文,那么这对用户来说会有点混乱。
    猜你喜欢
    • 2014-12-23
    • 1970-01-01
    • 2011-06-18
    • 2011-06-09
    • 2010-12-31
    • 2010-10-16
    • 1970-01-01
    • 2013-07-05
    • 2011-03-21
    相关资源
    最近更新 更多