【发布时间】:2017-05-10 16:30:37
【问题描述】:
我是 IOS 开发新手,我想使用 Swift 2.3 或 3.0 版本将一些软键盘按键和释放事件从框架发送到应用程序。
感谢您的帮助
【问题讨论】:
标签: ios swift keyboard-events
我是 IOS 开发新手,我想使用 Swift 2.3 或 3.0 版本将一些软键盘按键和释放事件从框架发送到应用程序。
感谢您的帮助
【问题讨论】:
标签: ios swift keyboard-events
如果我理解您的问题是正确的,那么您是在询问如何检测您何时键入键。有 textField 委托方法可以为您完成这项工作。
`// UITextField Delegates
func textFieldDidBeginEditing(_ textField: UITextField) {
}
func textFieldDidEndEditing(_ textField: UITextField) {
}
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
return true;
}
func textFieldShouldClear(_ textField: UITextField) -> Bool {
return true;
}
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
return true;
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return true;
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder();
return true;
}`
更新:
无法直接从虚拟键盘获取触摸事件。但是,您可以使用放置在屏幕外的 UITextField,使其不可见并调用 becomeFirstResponder 来显示键盘。然后,您可以实现委托方法 textView:shouldChangeTextInRange: 以便在按下某个键时收到通知。
更简洁的方法是编写一个实现 UIKeyInput 协议的自定义 UIControl。您只需要提供 insertText:、deleteBackward 和 hasText 的实现(对于这个,您总是可以简单地返回 YES)。要使键盘可见,您必须再次为您的自定义控件调用 becomeFirstResponder。
这两种方法都有一个共同点,即只有在释放键(以便输入文本)时才会通知您,而不是在实际开始触摸时通知您。正如我所说,直接获取 tochesBegan 事件是不可能的。如果需要,您可能必须实现自己的屏幕键盘。
【讨论】:
只需添加一个用于编辑通知事件的目标,如下所示:
// Obj-C
[textObject addTarget:self action:@selector(editingChanged:) forControlEvents:UIControlEventEditingChanged];
- (void)editingChanged:(id)object {
// Do your code here
}
// Swift
textObject.addTarget(self, action: #selector(self.editingChanged(textObject:)), for: .editingChanged)
func editingChanged(textObject: AnyObject) {
// Do your code here
}
【讨论】: