禁用外部键盘输入

时间:2011-07-08 23:11:57

标签: objective-c ios keyboard bluetooth

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

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

但仅仅检测它还不够......我想禁用它!

谢谢,

- 亚当

3 个答案:

答案 0 :(得分:3)

这似乎是一种处理输入的草率方式。进行适当的输入检查和验证,而不是试图强制使用单个输入法。如果有人试图在您的字段上使用iOS复制/粘贴功能,该怎么办?如果有一些未来的更新提供了您没有预料到的另一种输入方法会怎样?

答案 1 :(得分:2)

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

答案 2 :(得分:0)

您可以采取以下两种方法来解决此问题:

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

您可以使用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;
    }
}