当状态栏存在时,屏幕底部的输入被阻止

时间:2014-05-02 02:19:47

标签: ios uibutton uibarbuttonitem toolbar statusbar

我正在尝试在UINavigationController的工具栏上添加一个响应UIControlEventTouchDown的按钮。特别是,当用户按下按钮时,我希望它继续发射。

我注意到在iOS 7中(这在iOS 5或6中不是问题),当状态栏可见时,几乎就像底部大约有20个像素一样屏幕不再响应UIControlEventTouchDown(即,足以覆盖工具栏上的按钮的下半部分。虽然按钮 响应UIControlEventTouchUpInside in屏幕的这一部分。按钮的上半部分仍然响应UIControlEventTouchDown

换句话说,当状态栏出现时,如果点击按钮的上半部分,它会根据需要单独响应这两个事件。但是,如果点击按钮的下半部分,它只会在UIControlEventTouchUpInside发生后才响应这两个事件。

当状态栏被隐藏时,一切都很完美。

以下是UINavigationController

的根视图控制器中的相关代码
- (BOOL)prefersStatusBarHidden
{
    return NO;  // if YES, everything works great!
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    _button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 32, 32)];
    _button.backgroundColor = [UIColor redColor];
    [_button addTarget:self action:@selector(touchDown) forControlEvents:UIControlEventTouchDown];
    [_button addTarget:self action:@selector(touchUp) forControlEvents:UIControlEventTouchUpInside];
    _barButtonItem.customView = _button;
}

- (void)touchDown
{
    _button.backgroundColor = [UIColor greenColor];
}

- (void)touchUp
{
    _button.backgroundColor = [UIColor redColor];
}

我知道iOS 7引入了transparent status bars/navigationBars/toolbars,它在显示内容时会产生各种影响,但我无法找到任何有助于解决上述问题的内容。

我还应该补充一点,在模拟器中一切正常。只有在设备上测试时才会出现此问题。

任何建议都将不胜感激。谢谢。

0 个答案:

没有答案