【问题标题】:Block keyboard for input用于输入的块键盘
【发布时间】:2012-02-24 11:20:29
【问题描述】:

如何在 iOS >= 4 中阻止键盘输入(类似于 userInteractionEnabled = NO)?

键盘用于文本编辑。

如果我禁用 textedit 的交互,那么键盘会消失,但我想看到键盘。

【问题讨论】:

  • 哪个 UI 控件?据我所知,大多数(如果不是全部)控件仍然具有 userInteractionEnabled 属性?
  • 答案就在你的问题本身! userInteractionEnabled = NO;
  • userInteractionEnabled = NO; -> 不工作,键盘消失!
  • 不确定你为什么要阻止输入(我相信这是一个完全合乎逻辑的原因),但如果你有一个可见的键盘并且用户不能用它打字,Apple 可能会拒绝你的应用因为它可能会让用户感到困惑。
  • 您可以在 TextEdit 委托中连接 ValueChanged 方法,然后将其设置为清除文本框。

标签: iphone ios iphone-softkeyboard


【解决方案1】:

你试过这个委托吗?

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

【讨论】:

  • 就像他说的。使用该函数并简单地返回 no。键盘可能仍处于活动状态,但所有输入都将被阻止
【解决方案2】:

Le Coeur,我认为您需要考虑一种不同的方法来通过限制键盘输入来实现您想要实现的目标,原因有两个:

  1. 让用户参与输入但不对用户的任何手势做出反应的 UIElement 肯定会被 Apple 拒绝。

  2. 因为此键盘在操作系统级别,它是私有 API,我很确定您无法对键盘执行任何操作来阻止对按键的访问。

希望对你有帮助

【讨论】:

  • 嗯,苹果的密码锁怎么样?他们也阻止键盘!
  • 通过做什么?您是否只是看到顶部没有阻挡/阻碍视图的键盘并且没有反应?禁用后看起来会有所不同吗?
  • 与Apple pass lock的原理相同,在5次尝试后阻塞一段时间......
  • 我认为最好的用户体验是显示一个半透明的视图,表明键盘不可用。尝试使用 alpha=0.5 和 backgroundColor=[UIColor blackColor] 创建一个 UIView。将它的 userInteractionEnabled 设置为 NO 并将其作为子视图添加到您的 [UIApplication sharedApplication].keyWindow - 这样您就不需要弄乱键盘属性,并且您还可以向用户显示他无权访问输入。
  • 但是键盘总是在我的子视图上:(
【解决方案3】:

您始终可以在键盘视图上禁用userInteractionEnabled,或者在键盘上添加一个不可见的子视图以减少交互的危险。请参阅iOS: How to access the `UIKeyboard`?,了解如何获取键盘的 UIView。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2022-01-24
    • 2020-11-24
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    相关资源
    最近更新 更多