【问题标题】:How to detect user tap on iPad Bluetooth Keyboard如何检测 iPad 蓝牙键盘上的用户点击
【发布时间】:2012-09-20 06:37:27
【问题描述】:

我使用蓝牙键盘连接到我在 iPad 中的应用程序。我用它在 UITextView 或 UITextField 上打字。现在我需要检测用户是否从该蓝牙键盘上点击 Command + Z 按钮。是否有任何通知事件可以检测到这一点?我读过这个 NSEvent addGlobalMonitorForEventsMatchingMask: Hotkey Intercepting 它使用 NSEvent ,但我不认为我可以在 iPad 应用程序中使用它。有人可以指出我需要做什么吗?

谢谢你:)

【问题讨论】:

  • 你有什么合适的解决方案吗?

标签: ios5 bluetooth uitextfield uitextview keyboard-events


【解决方案1】:

很好的问题 - 我在最近的项目中遇到了这个大问题。当您使用蓝牙键盘和内置键盘时,有两种方法会做出不同的响应 - uikeyboardwillshownotification 和 uikeybaordwillhidenotification。在这些方法中保留一些 nslog 并查看响应。另一种方法是在您的文本字段开始编辑时查看键盘的框架大小 - textfielddidbeginediting - 尝试查看键盘的框架 - 蓝牙的高度为零 - 使用它可以解决您的问题

【讨论】:

  • 如果你只需要实现 cmd + z 键的敲击 - 那么有一个文本字段委托方法 - textField:shouldChangeCharactersInRange:replacementString: - 这里有一个字符串争论 - 你输入的所有当前字符是这个字符串 - 所以你可以做不区分大小写的比较 - 关于这个字符串和任何字符 - z 或 cmd 键并相应地放置你的验证
  • 谢谢你的回答,你能给我一个示例代码来做不区分大小写的比较吗?
  • 这是我将注释标题与当前位置进行比较的代码 - ([annotation.title caseInsensitiveCompare:@"Current Location"] == NSOrderedSame)
  • 这是单字符检查的委托方法。在这里我不允许用户输入“#”。同样,您可以输入 CMD 或 z。对于字母表 - 不区分大小写比较: -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if([string isEqualToString:@"#"] ) { return NO; } 否则返回是; }
  • 嗨@Ashwin我已经尝试了你的建议,但我使用了UITextview,所以我在uitextviewdelegate中尝试了它。当我按下CMD + z时,它从来没有调用过-(BOOL)textView:(UITextView *) textView shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 但它总是叫-(void)textViewDidChange:(UITextView *)textView,你能给我另一个建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 2011-05-13
  • 1970-01-01
  • 2015-11-23
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
相关资源
最近更新 更多