最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS橫屏彈鍵盤的高度錯誤異常解決

 更新時間:2021年04月15日 11:24:20   作者:yoferzhang  
這篇文章主要給大家介紹了關于iOS橫屏彈鍵盤的高度錯誤異常解決的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

問題:橫屏下第一次彈出鍵盤高度異常

- (void)handleKeyboardWillShowNotification:(NSNotification *)notification {
    NSTimeInterval animationDuration = 0;
    CGRect keyboardFrame = CGRectZero;
    NSDictionary *userInfo = [notification userInfo];
    [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration];
    [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardFrame];
    
    printf("keyboardFrame height: %f\n", keyboardFrame.size.height);

    [self showWithAnimationDuration:animationDuration keyboardFrame:keyboardFrame];
}

彈出新window,rootViewController里面有個 UITextField ,然后調用 becomeFirstResponder ,啟動app,第1次彈出鍵盤時,會走進兩次通知,打印鍵盤高度:

keyboardFrame height: 125.000000
keyboardFrame height: 302.000000

這兩個高度都是錯誤的,會導致鍵盤上面的工具條錯位:

第2次彈出鍵盤時:打印鍵盤高度為:

keyboardFrame height: 248.000000

這時候就是正常的高度了。

需要解決第一次異常的問題。

解決:直接取子view判斷

查看層級,發(fā)現(xiàn)鍵盤window有個子view UIInputSetHostView,這就是鍵盤顯示的父view,這時候取得這個view,也就取得了鍵盤的真正高度:

- (CGFloat)keyboardHeight {
   UIWindow *keyboardWindow = [[[UIApplication sharedApplication] windows] lastObject];
   UIView *inputView = [keyboardWindow.rootViewController.view tkp_findSubview:@"UIInputSetHostView"];
   if (inputView) {
       return inputView.tkp_height;
   }
   return 0;
}

其中 tkp_findSubview: 方法為 UIView 的分類方法:

- (UIView *)tkp_findSubview:(NSString *)name {
    return [self tkp_findSubview:name resursion:NO];
}

- (UIView *)tkp_findSubview:(NSString *)name resursion:(BOOL)resursion {
    Class class = NSClassFromString(name);
    for (UIView *subview in self.subviews) {
        if ([subview isKindOfClass:class]) {
            return subview;
        }
    }

    if (resursion) {
        for (UIView *subview in self.subviews) {
            UIView *tempView = [subview tkp_findSubview:name resursion:resursion];
            if (tempView) {
                return tempView;
            }
        }
    }

    return nil;
}

總結

到此這篇關于iOS橫屏彈鍵盤的高度錯誤異常解決的文章就介紹到這了,更多相關iOS橫屏彈鍵盤高度內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Flutter?Widgets之標簽類控件Chip詳解

    Flutter?Widgets之標簽類控件Chip詳解

    這篇文章主要為大家介紹了Flutter?Widgets之標簽類控件Chip詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • iOS各種ViewController控制器使用示例完整介紹

    iOS各種ViewController控制器使用示例完整介紹

    這篇文章主要為大家介紹了iOS各種ViewController控制器使用示例完整介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 談談為何iOS開發(fā)別用宏來定義常量

    談談為何iOS開發(fā)別用宏來定義常量

    最近在工程里看到很多不規(guī)范的使用,于是來寫一篇博客來讓不是很清楚的小朋友們,使用正確的規(guī)范開發(fā)ios,少埋點坑。
    2016-08-08
  • 理解Objective-C的變量以及面相對象的繼承特性

    理解Objective-C的變量以及面相對象的繼承特性

    這篇文章主要介紹了理解Objective-C的變量以及面相對象的繼承特性,文中的所說的點語法即是'對象名.成員變量名'這種對變量的訪問,需要的朋友可以參考下
    2016-01-01
  • iOS實現(xiàn)高效裁剪圖片圓角算法教程

    iOS實現(xiàn)高效裁剪圖片圓角算法教程

    經(jīng)常看到各種高效裁剪圓角的文章,正好之前做過一點數(shù)字圖像處理,所以寫個裁剪圓角的算法,下面這篇文章主要給大家介紹了關于iOS實現(xiàn)高效裁剪圖片圓角算法的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-06-06
  • iOS開發(fā)實現(xiàn)搜索框(UISearchController)

    iOS開發(fā)實現(xiàn)搜索框(UISearchController)

    這篇文章主要為大家詳細介紹了iOS開發(fā)實現(xiàn)搜索框,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • iOS下Safari點擊事件失效的解決方法

    iOS下Safari點擊事件失效的解決方法

    這篇文章主要給大家介紹了關于在iOS下Safari點擊事件失效的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • iOS驗證手機號的正則表達式

    iOS驗證手機號的正則表達式

    這篇文章主要為大家詳細介紹了iOS驗證手機號的正則表達式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • iOS中最全的各種定時器使用教程

    iOS中最全的各種定時器使用教程

    這篇文章主要給大家介紹了關于iOS中最全的各種定時器的使用教程,文中通過示例代碼介紹的非常詳細,通過文中介紹的最全的定時器相信會對各位iOS開發(fā)者們帶來一定的幫助,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-09-09
  • iOS用UITextField切換明文/密文顯示時末尾空白的問題解決

    iOS用UITextField切換明文/密文顯示時末尾空白的問題解決

    最近在工作中遇到一個問題,利用UITextField切換明文/密文顯示時發(fā)現(xiàn)字符串后面會出現(xiàn)一段空白,所以下面這篇文章主要給大家介紹了iOS用UITextField切換明文/密文顯示時末尾空白問題的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05

最新評論

榆林市| 广元市| 类乌齐县| 平陆县| 广安市| 泉州市| 临猗县| 兴隆县| 罗山县| 方正县| 南通市| 濮阳市| 永州市| 盱眙县| 大港区| 吴江市| 广西| 惠东县| 溧水县| 辽宁省| 鹤庆县| 精河县| 红原县| 高平市| 阳泉市| 桃园县| 会昌县| 辉县市| 望奎县| 黄骅市| 双城市| 开远市| 合山市| 西畴县| 尚义县| 河北省| 太仓市| 永康市| 岱山县| 若羌县| 桑日县|