繁体   English   中英

在View(iOS)的底部边缘触摸不注册

[英]Touch not registering at bottom edge of View (iOS)

我正在尝试针对iPhone使用基于全屏OpenGL ES 2的应用程序。

我可以使用它,但是由于某种原因,我无法在应用程序的底部16px上绘图。

在此处输入图片说明

注意:

  • 我通过沿着屏幕的边缘拖动手指来绘制每条线。

  • 底部16px的寄存器随时随地触摸截至 16px的接触。

  • 如果我在底部16像素上方触摸,则触摸和笔触会显示在正确的位置。

  • 我正在iOS 7.1 iPhone 5S上进行测试。

为什么会这样呢? 这是我相当标准的触摸处理代码,如下所示:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{

    CGRect     bounds = [glView bounds];
    UITouch*    touch = [[event touchesForView:glView] anyObject];
    CGFloat scale = glView.contentScaleFactor;

    CGPoint touch_location = [touch locationInView:glView];
    touch_location.y = (bounds.size.height - touch_location.y);

    touch_location.x *= scale;
    touch_location.y *= scale;

    //... draw stuff etc.
}

事实证明,对此没有真正的解决方案。 我在应用商店上查看了其他绘画应用程序,但没有一个画在边缘。 为了对称起见,大多数都不会在底部顶部绘制16px左右。 我最终做了同样的事情。

在您的项目状态栏中是隐藏的。

如果是这样,则您需要在视图中添加+20,因为状态栏不存在。 例如,如果您说的是带有iPhone状态栏的View Controller,那么在纵向模式下,高度将为460。但是如果状态栏被隐藏,则必须将其设置为480。

当然,这是因为iOS7中控制中心的滑动手势。 关于UIButton,我遇到了同样的问题(请参阅此处

在您的情况下,您可以尝试添加preferredsStatusBarHidden:

- (BOOL)prefersStatusBarHidden {
    return YES;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM