故事:
公司一個項目蜕琴,是iOS原生加載web的結構萍桌。最近有一個需求,就是需要用js能控制oc凌简,點擊web上的輸入框上炎,主動收起系統(tǒng)鍵盤,并且保持輸入框光標雏搂,保持編輯狀態(tài)藕施,以便外接刷卡器能夠正常輸入值。(尼瑪凸郑,這是什么鬼需求??)
一開始裳食,我的做法是,在oc上暴漏一個收鍵盤方法給js調用芙沥,但是oc里收鍵盤的常規(guī)方式是結束頁面上的編輯狀態(tài)诲祸,達不到既定要求浊吏,這個讓我很煩躁啊。研究了好久救氯,發(fā)現(xiàn)鍵盤是加載在一個單獨的window下的找田。然后嘗試隱藏這個window,解決問題径密,寫下來記錄一下午阵。方法如下
NSArray *array = [[UIApplication sharedApplication] windows];
NSLog(@"%lu",(unsigned long)array.count);
//獲取最頂層的window躺孝,一定是鍵盤所處的window享扔,讓這個window做hidden,和alpha為0.
//只做hidden無效果植袍,只做alpha有一個漸變惧眠。兩者一起完美解決
UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] lastObject];
if ([tempWindow isKindOfClass:NSClassFromString(@"UIRemoteKeyboardWindow")]) {
[tempWindow setAlpha:0];
tempWindow.hidden = YES;
}