如何使用Swift为IOS应用程序生成键盘按键和释放事件

时间:2016-12-26 06:38:28

标签: ios swift keyboard-events

是IOS开发的新手,我想使用Swift 2.3或3.0版本将一些软键盘按键和释放事件从框架发送到应用程序。

感谢您的帮助

2 个答案:

答案 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
}