iPad / iPhone触控点因校准错误吗?

我有一个使用整个屏幕的iPad应用程序(即,在Info.plist文件中将UIStatusBarHidden设置为true).主窗口和主视图的帧设置为(0,0,768,1024).主视图启用了多点触控.

视图控制器具有此代码来处理触摸:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    for (UITouch *touch in touches) {
        CGPoint location = [touch locationInView:nil];
        NSLog(@"touchesMoved at location %@", NSStringFromCGPoint(location));
    }
}

当我在模拟器中运行应用程序时,它的工作方式与预期相同.当我将鼠标从屏幕的一个边缘移动到另一个边缘时,报告的X值从0变为767.报告的Y值从20变为1023.(模拟器未报告前2​​0个触摸的是known issue)屏幕的像素,即使没有状态栏.)

这就是奇怪的:当我在一台真正的iPad上运行应用程序时,X值按预期从0到767,但报告的Y值从-6到1017,而不是0到1023,正如我所料.

它似乎在模拟器上正常工作的事实让我怀疑真实设备的触摸屏没有完美校准,我的只是报告关闭六个像素的Y值.任何人都可以验证是这种情况吗?否则,还有什么能够解释Y值与我的预期相差六个像素吗?

(在几天内,我应该有第二台iPad,所以我可以用另一台设备测试它并比较结果.)

做一些快速测试我注意到了同样的事情.我启动了一个基于视图的基本项目,但没有改变,但代码如下:

(iPadTestsAppDelegate)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

    // Override point for customization after app launch    
    viewController.view.multipleTouchEnabled = YES;
    viewController.view.userInteractionEnabled = YES;

    [window addSubview:viewController.view];
    [window makeKeyAndVisible];

    return YES;
}

(iPadTestsViewController)

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    for (UITouch *touch in touches) {
        CGPoint location = [touch locationInView:nil];
        NSLog(@"touchesMoved at location %@", NSStringFromCGPoint(location));
    }
}

当我触摸屏幕边缘时,它会在x轴上报告负数,而在y轴上不会达到0.添加一些变量以跟踪最大值和最小值可以将这些作为我们iPad的角落:{-5,2},{758,2},{ – 5,1019},{758,1019}.

相关文章
相关标签/搜索