触摸屏未在视图下边缘注册(iOS)

触摸屏未在视图下边缘注册(iOS),ios,iphone,objective-c,opengl-es,touch,Ios,Iphone,Objective C,Opengl Es,Touch,我正在为iPhone试用基于OpenGL ES 2的全屏应用程序 我有它的工作,但由于某种原因,我无法在底部16像素的应用程序绘制 注: 我用手指沿着画的边缘画每一条线 屏幕 触按中的任何位置,底部16px寄存器为 以16像素的速度触摸 如果我触摸底部16px以上,触摸和笔划就会显示出来 在正确的地方 我正在iOS 7.1 iPhone 5S上进行测试 为什么会这样? 以下是我的标准触摸处理代码: - (void)touchesMoved:(NSSet *)touches withEven

我正在为iPhone试用基于OpenGL ES 2的全屏应用程序

我有它的工作,但由于某种原因,我无法在底部16像素的应用程序绘制

注:

  • 我用手指沿着画的边缘画每一条线 屏幕

  • 触按中的任何位置,底部16px寄存器为 以16像素的速度触摸

  • 如果我触摸底部16px以上,触摸和笔划就会显示出来 在正确的地方

  • 我正在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.
}

在项目中,状态栏是隐藏的


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

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


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

这当然是因为iOS7中的control center的滑动手势。关于UIButton,我也有同样的问题(请参阅)

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

- (BOOL)prefersStatusBarHidden {
    return YES;
}

这当然是因为iOS7中控制中心的滑动手势。关于UIButton,我也有同样的问题(请参阅)

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

- (BOOL)prefersStatusBarHidden {
    return YES;
}

事实证明,没有真正的解决办法。我在app store上查看了其他一些绘画应用程序,但没有一个在边缘上画画。对于对称性,它们中的大多数不会在底部和顶部绘制16px左右。最后我也做了同样的事情。

事实证明,没有真正的解决办法。我在app store上查看了其他一些绘画应用程序,但没有一个在边缘上画画。对于对称性,它们中的大多数不会在底部和顶部绘制16px左右。最后我也做了同样的事情。

请告诉我们状态栏是否隐藏???@svrushal是的。状态栏是隐藏的。您在图像中看到的是实际的屏幕截图(稍后添加灰色边框以显示屏幕边缘)。请告诉我们状态栏是否隐藏???@svrushal Yes。状态栏是隐藏的。您在图像中看到的是一个实际的屏幕截图(稍后添加灰色边框以显示屏幕边缘)。没有骰子。加上这个没有区别,没有骰子。加上这个没什么区别。谢谢。这似乎很有希望。虽然我不明白你说的改变高度是什么意思?我尝试使用[view setBounds]更改边界大小,但没有任何区别。这就是你的意思吗?或者我应该在其他地方改变高度?谢谢。这似乎很有希望。虽然我不明白你说的改变高度是什么意思?我尝试使用[view setBounds]更改边界大小,但没有任何区别。这就是你的意思吗?或者我应该在其他地方改变高度?