是IOS开发的新手,我想使用Swift 2.3或3.0版本将一些软键盘按键和释放事件从框架发送到应用程序。
感谢您的帮助
答案 0 :(得分:0)
如果我理解你的问题是正确的,那么你就是在询问如何在键入键时检测到。有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事件是不可能的。如果您需要,您可能需要实现自己的屏幕键盘。
答案 1 :(得分:0)
只需添加一个目标来编辑通知事件,如下所示:
// 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
}