【问题标题】:Remove the "Dismiss keybard" key from a UITextView's keyboard on iPad从 iPad 上的 UITextView 键盘中删除“关闭键盘”键
【发布时间】:2011-05-11 14:22:20
【问题描述】:

我有一个带有 UITextView 的模态视图,用户可以输入一些文本(或不输入)并关闭模态视图。关闭键盘是没有意义的,因为它不会关闭模态视图(这是故意的),而且没有键盘的 UITextView 看起来很傻。

有没有办法隐藏或移除键盘上的“关闭键盘”键?

【问题讨论】:

  • 不确定这是个好主意。也许用户想要关闭键盘以查找它隐藏的内容。
  • @onnoweb 键盘不会遮挡任何东西,模态视图就是这样设计的。在这种情况下,关闭键盘真的没有任何意义......

标签: objective-c cocoa-touch ipad uitextview


【解决方案1】:

您无法隐藏或移除密钥,但您可以使用UITextViewDelegate 协议禁用它:

- (BOOL)textViewShouldEndEditing:(UITextView *)textView {

    return NO;
}

如果 UIKit 强制响应者在委托的情况下辞职(值得怀疑,但我没有仔细查看调用堆栈),您可以通过观察 UIKeyboardDidHideNotification 并将第一响应者设置回UITextView:[myUITextView becomeFirstResponder]

【讨论】:

  • 好的,如果没有办法删除它,那是最好的选择。我可以改变它的外观吗?也许将不透明度调暗一点,这样它看起来会被禁用?
  • 如果您真的非常想删除它,您可以创建一个自定义键盘来模仿普通键盘,但没有键盘关闭键。查看inputView 属性的文档。不过提醒一句,这实际上并不实用,因为这样做实际上会使键盘无法本地化。
  • 另外,我看到一些黑客将 UIKeyboard 转换为 UIView 并在层次结构中爬行,直到找到他们想要的键并用其他东西替换它。这篇 Apple 开发者论坛帖子谈到了它 devforums.apple.com/thread/22301
【解决方案2】:

协议方法没有帮助。 正如 Answerbot 建议的那样,应该听键盘通知。

   - (void)onIpadViewWillAppear
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showIpadKeyboard) name:UIKeyboardDidHideNotification object:nil];
}

- (void)onIpadViewWillDisappear
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)showIpadKeyboard
{
    [myTextField becomeFirstResponder];
}

这很好用,看起来很漂亮。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    相关资源
    最近更新 更多