2010-03-18 59 views

回答

5

根據湯姆的回答,我寫了代碼。它運作良好。

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // required 
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectZero]; 
    scrollView.delegate = self; 
    scrollView.contentSize = CGSizeMake(0.0f,1.0f); 
    [scrollView setContentOffset:CGPointMake(0.0f,1.0f) animated:NO]; 
    // optional 
    scrollView.scrollsToTop = YES; // default is YES. 
    [self.view addSubview:scrollView]; 
} 

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView { 
    NSLog(@"Detect status bar is touched."); 
    /* Your own code. */ 
    return NO; 
} 
0

你不能。狀態欄由應用程序保存。您只能打開和關閉它。

更重要的是,任何擺弄狀態欄的操作很可能會讓您的應用被Apple拒絕,因爲它可能會干擾硬件的操作,例如,僞裝或隱藏低電量。

如果您需要全屏觸摸您的視圖,則應該隱藏狀態欄。

+0

這是* *可能的(根據第一響應者),並在獲批申請完成:http://blog.instapaper.com/post/420370426 – Tom 2010-03-18 22:09:38

1

你需要在你的響應者鏈中有一個UIScrollView,並且它需要有一個委託集。然後,您可以在委託中覆蓋scrollViewShouldScrollToTop:,當用戶點擊狀態欄時將調用該委託。如果您不希望將滾動視圖滾動回頂部的默認行爲,請務必返回NO

+0

湯姆,謝謝你的提示。不幸的是,我正在做你所建議的一切,但我仍然沒有收到這個事件。 scrollView是第一個響應者,ViewController是委託。任何其他原因爲什麼你認爲這可能無效? – user305578 2010-08-22 03:30:32

+1

嘗試了很多東西之後,我找到了答案。我的UIScrollView包含多個UIWebViews。每個UIWebView包含一個默認具有scrollsToTop == YES的UIScrollView; 訣竅是挖掘到UIWebView並將關聯的UIScrollView的scrollsToTop設置爲NO。之後,原始的UIScrollView的scrollViewShouldScrollToTop沒有被UIWebView的那些攔截。 – user305578 2010-08-22 07:20:38