UIStatusBar的點擊

1 UIStatusBar的系統點擊事件

9140338F-2789-434F-9867-79087E45A939.png

系統默認的點擊狀態欄時,scrollView的內容返回到頂部,如圖所示.原因是默認情況下scrollView 的scrollsToTop屬性為YES.
scrollsToTop的使用場景:當頁面中只有一個scrollView的scrollsToTop屬性為YES時,點擊狀態欄, scrollView的內容才會返回到頂部,如果像上圖頁面一樣,有多個scrollView(精華頁面,推薦,視頻,圖片等都是scrollView),且每個scrollView的scrollsToTop默認都為YES,點擊狀態欄是,scrollView的內容就不會滾動.為解決這個問題,實現方法有以下幾種:

2 恢復UIStatusBar的系統點擊

2.1 方法一:在UIStatusBar上覆蓋一個透明的UIWindow,并添加點擊事件

// 全局變量保存新建的窗口,否則是局部變量,程序啟動后會銷毀
static UIWindow *topWindow_; 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 程序啟動完畢那一刻的所有窗口都必須要設置rootViewController,由于新建的   topWindow_ 沒有rootViewController ,所以延遲到程序啟動后執行
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        // 創建一個新的窗口
        topWindow_ = [[UIWindow alloc] init];
        topWindow_.windowLevel = UIWindowLevelAlert;
        topWindow_.backgroundColor = [UIColor redColor];
        topWindow_.frame = [UIApplication sharedApplication].statusBarFrame;
        topWindow_.hidden = NO;
        [topWindow_ addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(topWindowClick)]];
    });
}

- (void)topWindowClick
{
    UIWindow *window = [UIApplication sharedApplication].keyWindow;
    [self searchAllScrollViewsInView:window];
}

/**
 *  查找view中的所有scrollView
 */
- (void)searchAllScrollViewsInView:(UIView *)view
{
    // 遞歸遍歷所有的子控件
    for (UIView *subview in view.subviews) {
        [self searchAllScrollViewsInView:subview];
    }
    
    // 如果不是UIScrollView,直接返回
    if (![view isKindOfClass:[UIScrollView class]]) return;
    
    // 是scrollView,將內容滾動到最前面
    UIScrollView *scrollView = (UIScrollView *)view;
    CGPoint offset = scrollView.contentOffset;
    offset.y =  - scrollView.contentInset.top;
    [scrollView setContentOffset:offset animated:YES];
}

缺陷:
(1) 點擊狀態欄時,所有的scrollView的內容都會返回到頂部,用戶體驗不好

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容