關(guān)于Custome Keyboard的一些坑

1.打開主程序:
一如很多前輩所說,即是打開containerAPP,蘋果提供了NSExtensionContext下的OpenURL方法,但是官方文檔中又提到:

Each extension point determines whether to support this method, or under which conditions to support this method. In iOS 8, only the Today extension point (used for creating widgets) supports this method.

可能蘋果目的是所有的extension都支持該方法,但是在iOS8中只有Today extension 是支持的,而其他并不支持,想想現(xiàn)在都已經(jīng)10.2了 :D

在stackoverflow上,找到了一個(gè)解決辦法,是在iOS8.3+可以使用的。不知道后期是否還有更好的方法,但是這個(gè)是可以解決打開問題,如果有更好的方法,評論分享啊。

UIResponder* responder = self;
while ((responder = [responder nextResponder]) != nil) {
  if ([responder respondsToSelector:@selector(openURL:)] == YES) {
      [responder performSelector:@selector(openURL:)
                      withObject:url];
        }
    }
//url是主程序的URLScheme

主程序會在AppDelegate里的

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
   
    return YES;
}

里接收Extension發(fā)送來的請求,要處理什么事情,只要在這里進(jìn)行就可以了

2.判斷是否開啟完全訪問

[UIPasteboard generalPasteboard].string == nil ?

因?yàn)殚_啟了完全訪問的權(quán)限后,就能訪問到系統(tǒng)的剪切板,所以通過這個(gè)方法間接的判斷是否開啟完全訪問。

3.實(shí)時(shí)獲取剪切板內(nèi)容
可以考慮開啟NSTimer,然后利用 [timer setFireDate:[NSDate distantPart]] 開啟,在ViewDidDisappear里 [timer setFireDate:[NSDate distantFuture]] 關(guān)閉。

4.控制內(nèi)存占用問題
因?yàn)樘O果對自定義鍵盤嚴(yán)格的內(nèi)存限制,超過會導(dǎo)致鍵盤直接崩潰,所以控制內(nèi)存占用是重中之重
· 避免循環(huán)引用,及時(shí)釋放
· 繪制文字會瞬間占用很大的內(nèi)存,且無法立即釋放,所以比如在加載Emoji表情的時(shí)候,盡量使用圖片來顯示。完整的Emoji表情,可以在http://www.unicode.org/emoji/index.html 找到。對應(yīng)按鍵的字符,也最后使用圖片。
· 加載圖片使用imageWithContentsOfFile的方法
· 還有一些方法的使用可以參考搜狗輸入法的優(yōu)化總結(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在六月份,總有很多熱點(diǎn)信息是與高考有關(guān)的。昨天在朋友圈里看到一組“高考感人相片”,其中有一張是站在考場外的家長焦灼...
    留小館閱讀 288評論 4 3
  • 我?guī)е诎椎拿婢? 在形形色色的人群之中移動, 舞臺的燈光, 只有在靜謐的時(shí)刻 才會開啟。 但,在喧嘩的...
    薔薇巧克力閱讀 477評論 0 1
  • 長期從事編程活動的程序員都期望在50多歲時(shí)能爬到一個(gè)足夠高的職位,或者能順利的退休。 但我在這里討論的可能是一個(gè)你...
    大圣眾包閱讀 518評論 2 2
  • SDWebImage的三個(gè)常用方法 愿編程讓這個(gè)世界更美好
    小苗曉雪閱讀 303評論 0 0

友情鏈接更多精彩內(nèi)容