2010-03-18 60 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