touchsBegan和touchesEnded在Xcode 6.3更新后返回不同的触摸位置

时间:2015-04-17 19:03:58

标签: ios objective-c opengl-es xcode6.3 ios8.3

这可能是我遇到的最奇怪的问题,我甚至不知道从哪里开始寻找 - 非常感谢任何帮助。

更新到Xcode 6.3(以及iOS 8.3 SDK)之后,在我的旧OpenGL应用程序中出现了一个新问题,在宽屏显示器上,任何x坐标触摸都限制在320.这意味着如果我触摸x如果坐标在320以上,它将在触摸时注册为320。

现在奇怪的是,这只发生在EAGLView - touchesMoved的touchesBegan函数中,而touchesEnded仍可以检测到最多568,即使它们具有完全相同的代码。

有人知道可能导致这种情况的原因吗?以下是在所有3个功能中使用的触摸代码:

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
    UITouch *touch = [[event touchesForView:self] anyObject];
    CGPoint _location;
    _location = [touch locationInView:self];
    // Flip the y location ready to check it against OpenGL coordinates
    float temp = _location.x;
    _location.x = _location.y;
    _location.y = temp;
    NSLog(@"Touched at (%f,%f)", _location.x,_location.y); }

1 个答案:

答案 0 :(得分:1)

最后想出来了 - 看起来iOS 8在将UIView直接添加到app delegate中的窗口时会出现一些问题。我必须创建一个UIViewController,将UIView添加到其中,然后将其作为根视图控制器。