【问题标题】:Disable external keyboard input禁用外部键盘输入
【发布时间】:2011-07-08 23:11:57
【问题描述】:

我不希望在我的应用中允许使用外部键盘。我意识到这是一个边缘案例,但我不喜欢使用外接键盘时键盘不显示的方式。特别是因为我在键盘上方有一个自定义视图,现在将显示在屏幕底部。另外,我有只需要数字的文本字段(例如电话号码)。而不是检查输入,我宁愿只显示数字键盘。显然,外接键盘不会发生这种情况。

我在这里看到一个帖子:How to detect external keyboard connectification in objective-c?

但这还不足以检测到它...我想禁用它!

谢谢,

-亚当

【问题讨论】:

  • 我不清楚这是否会通过 Apple 的审核。

标签: objective-c ios keyboard bluetooth


【解决方案1】:

这似乎是一种处理输入的草率方式。进行正确的输入检查和验证,而不是尝试强制使用单一输入法。如果有人试图在您的领域使用 iOS 复制/粘贴功能怎么办?如果将来有一些更新提供了您没有预料到的另一种输入法怎么办?

【讨论】:

  • 您对草率的输入处理是正确的,但是可以禁用复制/粘贴/全选菜单。
【解决方案2】:

不要这样做。这是错的。喜欢外接键盘的用户会讨厌你,会向你发送错误报告,并对你的应用写下差评。好像这还不够,这可能是您的应用在提交时被 Apple 拒绝的理由。

【讨论】:

    【解决方案3】:

    你可以做两件事来规避这个问题:

    即使存在外接键盘,您也可以强制显示键盘。

    您可以使用UITextField 委托方法验证文本输入

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

    例如,只允许输入数字,您可以这样做:

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    
        NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
    
        if ([[string stringByTrimmingCharactersInSet:myCharSet] length]) {
            return YES;
        } else {
            return NO;
        }
    } 
    

    【讨论】:

      猜你喜欢
      • 2021-08-13
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 2018-11-10
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 2015-09-03
      相关资源
      最近更新 更多