仅在 320x480 区域检测到 iPad 触摸

Posted

技术标签:

【中文标题】仅在 320x480 区域检测到 iPad 触摸【英文标题】:iPad touch detected only in 320x480 region 【发布时间】:2010-04-16 14:39:33 【问题描述】:

我正在升级 iPhone 应用程序,到目前为止一切顺利(设法调整大多数表单的屏幕显示大小)。但是,我无法解决一个问题 - 仅在旧的 320x480 区域中检测到触摸。有什么想法可以解决吗?

谢谢

编辑:这是获取超级视图边界的代码执行时的结果:

CGFloat wdth = self.view.superview.bounds.size.width; NSLog(@"%d", wdth); CGFloat hgth = self.view.superview.bounds.size.height; NSLog(@"%d", hgth);

结果:

2010-04-16 14:25:36.268 xxx[14871:207] 0 2010-04-16 14:25:36.269 xxx[14871:207] 1073741824

(%f) 的结果:

2010-04-16 14:37:26.048 xxx[15053:207] -1.998374 2010-04-16 14:37:26.049 xxx[15053:207] 0.000000

(%g) 的结果:

2010-04-16 14:37:41.113 xxx[15084:207] -1.99837 2010-04-16 14:37:41.115 xxx[15084:207] 9.48221e-38

【问题讨论】:

可能过于明显的建议,但您是否在项目中搜索过“320”或“480”的实例? 是的 - 我找不到任何...而且我的所有视图都显示正常 - 触摸事件不会在 320x480 区域之外触发。 请改用NSLog(@"%g", ...)。宽度和高度是浮点数,而不是整数。 CGSize 使用浮点数,因此您可能希望像这样输出边界:NSLog(@"%f",wdth); @kape:你确定self.view.superview != nil?否则你报告的数字毫无意义。 【参考方案1】:

http://iphonedevelopment.blogspot.com/2010/04/converting-iphone-apps-to-universal.html

在你的 AppDelegate 中:

- (void)applicationDidFinishLaunching:(UIApplication *)application // 愚蠢的苹果... CGRect rect = [[UIScreen mainScreen] bounds]; [窗口设置框架:矩形]; // 现在,显示你的应用 [窗口添加子视图:rootController.view]; [窗口 makeKeyAndVisible];

【讨论】:

【参考方案2】:

在界面生成器中确保选中主窗口-iPad“启动时全屏”窗口属性。

【讨论】:

【参考方案3】:

当容器视图设置得太小时,我看到了类似的行为。子视图将正常显示,但触摸不会触发,因为触摸发生在父视图之外。

【讨论】:

知道如何影响容器视图大小吗? 检查被触摸视图的 .superview。获得超级视图后,查看 .bounds.size 以查看大小。因此,如果您正在触摸的视图称为 touchableView,请检查 touchableView.superview.bounds.size 并确保它具有正确的尺寸。如果是,检查superview的superview(touchableView.superview.superview.bounds.size)。继续做,直到你用完超级视图。如果 superviews 中没有任何不合适的地方,这可能不是问题。希望对您有所帮助。 得到了一些非常奇怪的结果...检查编辑 嗯。如果对 self.view.bounds.size.width 和 .height 执行相同的输出会发生什么?【参考方案4】:

这里真正的问题是,在文件 MainWindow-iPad.xib 中,创建的 Window 对象的大小为 320 x 480。正如 ayman2010 所提到的,设置“启动时全屏”可以解决此问题。

为什么苹果会创建一个这么小的 iPad 窗口!!!???

【讨论】:

【参考方案5】:

您也可以在 Interface Builder 中打开(自动创建的)MainWindow-iPad.xib,选择文件/创建 iPad 版本,关闭 MainWindow-iPad.xib 并将未命名的新 XIB(具有正确的大小)保存在旧的。

BurninLeo

【讨论】:

以上是关于仅在 320x480 区域检测到 iPad 触摸的主要内容,如果未能解决你的问题,请参考以下文章

滚动后,在错误区域检测到触摸(iPad / 网站)

如何针对触控设备优化网站

检测 SpriteKit 中节点特定区域的触摸

完美触控、iPad 兼容和内容滑动就绪网站的框架

升级到通用应用程序 - mainWindow-iPad 的大小为 320x480

检测 UWP 应用中触摸板的多点触控手势