iOS8自定义键盘问题

Tac*_*Lee 3 keyboard ios ios8 ios-app-extension custom-keyboard

我现在正在开发iOS 8自定义键盘扩展,还有一些我无法弄清楚的问题.

首先,我认为UITextInputDelegate方法没有按照我的预期运作.

这听起来是正确的:selectionWillChange:selectionDidChange:方法应该当用户长时间打字印刷机区域叫什么名字?而textWillChange:textDidChange:方法应该每当文字字面上改变被称为?

实际上,我观察到的是,当我在文本输入区域中更改选择textWillChange:并被textDidChange:调用时,我无法得到其他两种方法在什么条件下被调用的线索.如果有人知道这些委托方法的用法,请告诉我.

其次,我知道该playInputClick:方法可用于虚拟化自定义键盘中的键盘点击声.由于这适用于正常情况,我发现无法在iOS 8自定义键盘扩展中应用.我的应用程序包含一个键盘视图控制器,以及将子类UIView添加到此视图控制器的自定义视图.我的方法是UIInputViewAudioFeedback在此自定义视图中声明委托,enableInputClicksWhenVisible方法返回YES,[[UIDevice currentDevice] playInputClick]设置调用的类方法,然后在需要键盘声音的任何地方调用此方法:这根本不起作用.

我的方法有什么不对吗?如果有人成功使用playInputClick方法,请分享你的智慧.

谢谢

Guy*_*ker 6

最好在队列而不是UI键处理程序中播放音频

func playPressKeySound() {
    let PRESS_KEY_DEFAULT_SOUND_ID: SystemSoundID = 1104
    dispatch_async(dispatch_get_main_queue()) {
            AudioServicesPlaySystemSound(PRESS_KEY_DEFAULT_SOUND_ID)
        }
}
Run Code Online (Sandbox Code Playgroud)

注意:这仅在键盘打开完全访问权限时才有效,因此在调用之前最好测试完全访问权限,否则键盘可能会长时间暂停.