簡體   English   中英

iOS8自定義鍵盤問題

[英]iOS8 custom keyboard issues

我現在正在開發iOS 8自定義鍵盤擴展,還有一些我無法弄清楚的問題。

首先,我認為UITextInputDelegate方法沒有按預期工作。

這聽起來是否正確: selectionWillChange:selectionDidChange:當用戶長按打字區域時應該調用方法? 並且textWillChange:textDidChange:方法應該在文本字面改變時調用?

實際上,我觀察到的是,當我在文本輸入區域中更改選擇時,會調用textWillChange:textDidChange:並且我無法得到其他兩個方法在什么條件下被調用的線索。 如果有人知道這些委托方法的用法,請告訴我。

其次,我知道playInputClick:方法可用於虛擬化自定義鍵盤中的鍵盤單擊聲音。 由於這適用於正常情況,我發現無法在iOS 8自定義鍵盤擴展中應用。 我的應用程序包含一個鍵盤視圖控制器,以及將子類UIView添加到此視圖控制器的自定義視圖。 我的方法是在這個自定義視圖中聲明UIInputViewAudioFeedback委托,enableInputClicksWhenVisible方法返回YES ,調用[[UIDevice currentDevice] playInputClick]類方法被設置,然后在需要鍵盤聲音的地方調用此方法:這不起作用所有。

我的方法有什么不對嗎? 如果有人成功使用了playInputClick方法,請分享你的智慧。

謝謝

最好在隊列而不是UI鍵處理程序中播放音頻

func playPressKeySound() {
    let PRESS_KEY_DEFAULT_SOUND_ID: SystemSoundID = 1104
    dispatch_async(dispatch_get_main_queue()) {
            AudioServicesPlaySystemSound(PRESS_KEY_DEFAULT_SOUND_ID)
        }
}

注意:這僅在鍵盤打開完全訪問權限時才有效,因此在調用之前最好測試完全訪問權限,否則鍵盤可能會長時間暫停。

對於第二個問題,請嘗試AudioServicesPlaySystemSound

#define PRESS_KEY_DEFAULT_SOUND_ID 1104

- (void)playPressKeySound {
    if (self.openPressSound) {
        AudioServicesPlaySystemSound(PRESS_KEY_DEFAULT_SOUND_ID);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM