2

我正在尝试检测 iPhone 上的任何触摸,UIStatusBar但它不起作用。我已经尝试子类化UIApplicationUIWindow访问它,但仍然没有。

4

3 回答 3

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;
}
于 2010-03-19T08:40:34.593 回答
1

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

于 2010-03-18T22:14:34.677 回答
0

你不能。状态栏由应用程序持有。您只能打开和关闭它。

更重要的是,任何对状态栏的摆弄都可能让你的应用程序被 Apple 拒绝,因为它可能会干扰硬件的运行,例如伪装或隐藏低电量。

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

于 2010-03-18T15:33:49.630 回答