一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - iOS橫屏彈鍵盤的高度錯誤異常解決

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

2021-06-07 17:10yoferzhang IOS

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

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

?
1
2
3
4
5
6
7
8
9
10
11
- (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次彈出鍵盤時,會走進兩次通知,打印鍵盤高度:

?
1
2
keyboardFrame height: 125.000000
keyboardFrame height: 302.000000

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

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

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

?
1
keyboardFrame height: 248.000000

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

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

解決:直接取子view判斷

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

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

?
1
2
3
4
5
6
7
8
- (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 的分類方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
- (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橫屏彈鍵盤高度內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://juejin.cn/post/6950848385511325726

延伸 · 閱讀

精彩推薦
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5282021-01-16
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111312021-03-15
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
主站蜘蛛池模板: 国产精品久久久久久福利 | 欧美日韩国产成人综合在线 | 美妇在男人胯下哀求 | 精品在线免费观看视频 | 欧美性色黄大片四虎影视 | 日本中文字幕黑人借宿影片 | 色综合图片 | 香蕉国产人午夜视频在线 | 美女自插 | 黄情视频 | 欧美一级鲁丝片免费看 | 狠狠澡 | 韩国帅男同gay网站 韩国三级在线播放 | 国产色视频网站 | 日本高清视频网站 | 亚洲国产天堂久久综合网站 | 色女阁 | 荡娃艳妇有声小说 | 国产精品久久国产精品99盘 | 国产在线视频福利 | 国产伦精品一区二区三区免费迷 | 国产成人a v在线影院 | 亚洲精品影视 | 亚洲qvod图片区电影 | 女主被男主为催奶药h | 日本免费全黄一级裸片视频 | 色综合综合 | 久久精品国产在热亚洲完整版 | 国产精品露脸国语对白手机视频 | 日本欧美强乱视频在线 | 91亚洲视频在线观看 | 久久亚洲午夜牛牛影视 | 国内精品中文字幕 | 欧美摘花破处 | 91九色丨porny丨制服 | 亚洲社区在线观看 | 高清国产激情视频在线观看 | 青草青视频 | 国内精品视频一区二区三区八戒 | 四虎国产视频 | 小货SAO边洗澡边CAO你动漫 |