iOS系統(tǒng)鍵盤Window層注意事項(xiàng)

劃重點(diǎn):UIRemoteKeyboardWindow是UITextEffectsWindow的子類

擔(dān)心直接通過(guò)索引獲取這兩個(gè)window的安全性的小伙伴,可以通過(guò)遍歷判斷類名稱來(lái)獲取,這樣對(duì)不同系統(tǒng)版本的適配性更強(qiáng)、更安全。但是要注意UIRemoteKeyboardWindow是UITextEffectsWindow的子類。

話不多說(shuō),上代碼:

    NSString *version= [UIDevice currentDevice].systemVersion; 

    UIWindow *keyboardWindow;

    UIWindow *textEffectsWindow;

    for (UIWindow *window in [[UIApplication sharedApplication] windows]) {

        if ([window isKindOfClass:NSClassFromString(@"UITextEffectsWindow")]) {

            if (version.doubleValue>=9.0) {

                if ([windowisKindOfClass:NSClassFromString(@"UIRemoteKeyboardWindow")]) {

                    keyboardWindow = window;

                } else {

                    textEffectsWindow = window;

                }

            } else {

                textEffectsWindow = window;

            }

        }

    }

    if (keyboardWindow) {

        keyboardWindow.center = CGPointMake([[UIScreen mainScreen] bounds].size.width*0.5f,[[UIScreen mainScreen] bounds].size.height*0.5f);

        keyboardWindow.bounds = CGRectMake(0,0, windowWidth, windowHeight);

        keyboardWindow.transform = CGAffineTransformMakeRotation(0);

    }

    if (textEffectsWindow) {

        textEffectsWindow.center = CGPointMake([[UIScreen mainScreen] bounds].size.width*0.5f,[[UIScreen mainScreen] bounds].size.height*0.5f);

        textEffectsWindow.bounds = CGRectMake(0,0, windowWidth, windowHeight);

        textEffectsWindow.transform = CGAffineTransformMakeRotation(0);

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

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