【问题标题】:Can't get rid of the keyboard in UITextView无法摆脱 UITextView 中的键盘
【发布时间】:2010-11-30 04:57:43
【问题描述】:

我有一个表格,在其中一个单元格中我保留了一个 UITextView。当用户点击它时,键盘就会出现。我正在尝试各种方法来摆脱它。我的第一种方法是检测 UITextView 的表格单元格上的点击,但由于文本视图占据了大部分,它不适合。然后我尝试在工具栏上添加一个按钮,每当用户按下它时,键盘就会随着 resignFirstResponder 消失,但它不起作用。似乎只有当我与 UITextView resignFirstResponder 在同一个视图中时才有效。那么如何从不同的角度摆脱键盘呢?

谢谢。

【问题讨论】:

    标签: iphone keyboard uitextview hide


    【解决方案1】:

    你是什么意思“它不会工作”。如果 txtView 是您的 UITe4xtView,您是否意味着将按钮与具有 [txtView resignFirstResponder] 的操作相关联不起作用?我以前用过这段代码,它对我有用

    【讨论】:

    • 我认为他有类似 [self resignFirstResponder] 的按钮。澄清会很好。
    【解决方案2】:

    在不知道控件的大小和意图的情况下,很难做出可靠的建议。但是,如果您正在寻找只读文本视图,为什么不考虑使用 UILabel?如果它将包含大量只读文本并且您需要丰富的格式,请考虑使用带有格式的 UIWebView。

    当然,这个答案可能完全不合适。您能否阐明您的意图,或者显示正在运行的应用程序的屏幕截图(当然是未开发的)?

    【讨论】:

      【解决方案3】:

      以下方法使用 Return 键关闭 UITextView 键盘。

      在你的 Controller 中,将 UITextView 的 Delegate 设置为 self 像这样:

      myTextView.delegate=self;
      

      然后添加这个方法:

      - (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 FALSE;
       }
       // For any other character return TRUE so that the text gets added to the view
       return TRUE;
      }
      

      如果您没有将 Return 键用作真正的 Return 键(例如添加新行),这应该可以工作。

      【讨论】:

      • UITextView 的全部想法不就是支持多行吗?否则为什么不直接使用 UITextField?
      【解决方案4】:

      这种问题我用过,方法如下

      - (BOOL)textFieldShouldReturn: tf_some_text_field {
      
      [tf_some_text_field resignFirstResponder];
      [tf_another_text_field_in_the_same_view resignFirstResponder];
      
      return YES;
      }
      

      希望对你有帮助……

      【讨论】:

      • 我认为您的实现仅适用于 UITextField,不适用于 UITextView。
      【解决方案5】:

      尝试在 Interface Builder 的 Text View Attributes 窗口中取消选中“可编辑”选项。

      这会在用户点击您的 TextView 时停止显示键盘

      【讨论】:

        猜你喜欢
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2012-01-21
        • 1970-01-01
        • 2015-12-16
        • 1970-01-01
        • 2012-10-14
        • 1970-01-01
        相关资源
        最近更新 更多