我有一个使用整个屏幕的 iPad 应用程序(即UIStatusBarHidden
在 Info.plist 文件中设置为 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。(这是一个已知问题 http://www.iphonedevsdk.com/forum/iphone-sdk-development/1651-no-touch-events-hidden-statusbar-place.html即使没有状态栏,模拟器也不会报告屏幕前 20 个像素的触摸。)
奇怪的是:当我在实际的 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}。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)