如何检测UIStatusBar / iPhone上的触摸

时间:2010-03-18 14:29:57

标签: ios iphone xcode uiwindow uiapplication

我正试图检测iPhone UIStatusBar上的任何触摸,但它无法正常工作。我已经尝试了对UIApplicationUIWindow进行子类化以访问它,但仍然没有。

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

您需要在响应者链中拥有UIScrollView,并且需要设置委托。然后,您可以覆盖委托中的scrollViewShouldScrollToTop:,当用户点击状态栏时,将调用该委托。如果您不希望滚动滚动视图的默认行为回到顶部,请务必返回NO

答案 2 :(得分:0)

你做不到。状态栏由应用程序保存。你只能打开和关闭它。

更重要的是,任何摆弄状态栏的人都可能会让Apple拒绝您的应用,因为它可能会干扰硬件的操作,例如:伪装或隐藏低电量。

如果您需要全屏触摸视图,则应隐藏状态栏。