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上,找到了一個解決辦法炸宵,是在iOS8.3+可以使用的。不知道后期是否還有更好的方法谷扣,但是這個是可以解決打開問題土全,如果有更好的方法,評論分享啊会涎。
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ā)送來的請求裹匙,要處理什么事情,只要在這里進行就可以了
2.判斷是否開啟完全訪問:
[UIPasteboard generalPasteboard].string == nil ?
因為開啟了完全訪問的權(quán)限后末秃,就能訪問到系統(tǒng)的剪切板概页,所以通過這個方法間接的判斷是否開啟完全訪問。
3.實時獲取剪切板內(nèi)容:
可以考慮開啟NSTimer,然后利用 [timer setFireDate:[NSDate distantPart]]
開啟练慕,在ViewDidDisappear里 [timer setFireDate:[NSDate distantFuture]]
關(guān)閉惰匙。
4.控制內(nèi)存占用問題:
因為蘋果對自定義鍵盤嚴(yán)格的內(nèi)存限制技掏,超過會導(dǎo)致鍵盤直接崩潰,所以控制內(nèi)存占用是重中之重
· 避免循環(huán)引用项鬼,及時釋放
· 繪制文字會瞬間占用很大的內(nèi)存哑梳,且無法立即釋放,所以比如在加載Emoji表情的時候绘盟,盡量使用圖片來顯示鸠真。完整的Emoji表情,可以在http://www.unicode.org/emoji/index.html 找到龄毡。對應(yīng)按鍵的字符吠卷,也最后使用圖片。
· 加載圖片使用imageWithContentsOfFile的方法
· 還有一些方法的使用可以參考搜狗輸入法的優(yōu)化總結(jié)