【问题标题】:iPad Landscape messing up touches beganiPad Landscape 开始搞砸了
【发布时间】:2012-02-13 00:28:25
【问题描述】:

我的应用程序只允许在横向方向,并且它以横向方式启动。因此,当 iPad 为横向时,左上角为 (0,0),所以一切正常。

但是,当我选择“touchesBegan”时……它无法正常工作。只有当我像 iPad 右侧的三分之二那样轻按时,它才会触动。我知道它与方向有关,因为该应用程序实际上只是带有单个 UIView 的空白屏幕,没有别的。这很简单。没有其他可能的问题会导致这种情况。

具体来说,如果我在 touchesBegan 函数中打印出 x 位置,如果 iPad 用左侧的主页按钮按住,宽度为 1024。而 1024-768 为 256。这正是 x它开始感觉到我的触摸的位置。 x=256 左边的任何东西都感觉不到触摸。

我该如何解决这个问题?

【问题讨论】:

    标签: ipad uiview touches touchesbegan touchesmoved


    【解决方案1】:

    检查 Struts 和 Springs 并确保任何应该接触的东西都覆盖了整个区域并锁定在 4 个侧面。

    【讨论】:

    • 我不熟悉这些词。你能澄清和具体说明吗?
    • 我的应用程序是在没有 xib 的情况下以编程方式完成的...你能以编程方式告诉我如何做到这一点吗?
    • (感谢 NJones 提供图片)。扩展 Neo 的答案:如果应用程序启动时设备已经处于所需的方向,它将不会调用该函数,因此添加调整大小代码的最佳位置可能是 viewWillAppear。
    • 是的,费尔南多说的是真的。就像我在其他评论中提到的那样,您可以将该 appFrame 和另一行 [self.view setFrame:] 放在 viewWillAppear 中。
    • 我在 viewWillAppear 中也这样做了。它仍然认为宽度是 768,高度是 1024……这是向后的。
    【解决方案2】:

    要以编程方式进行,

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { CGRect appFrame = [[UIScreen mainScreen] applicationFrame]; [self.view setFrame:CGRectMake(0.0f, 0.0f, appFrame.size.width, appFrame.size.height)]; 返回是; // 如果您只想支持横向模式,请使用下面的行 /* return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight); */ }

    这会将视图设置为占据全屏。

    【讨论】:

    • 它仍然认为我没有在横向模式下触摸屏幕,正如我在上面的问题中所描述的那样
    • 当然,你可以在任何你想要的地方设置框架(在视图实际显示之前查看 init 或其他地方)!我只是举了一个支持多个方向的例子。 :)
    • 那么我该如何定义“可触摸”区域...因为它就像我处于纵向模式一样运行,但是图形在横向模式下运行
    • @CodeGuy 我刚刚实现了一个小示例项目,它对我来说很好用!
       - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { for (UITouch * touch in touches) { NSLog(@"%f; %f", [touch locationInView:self.view] .x, [触摸 locationInView:self.view].y); } } 
    • 你能贴出项目所​​有代码的代码吗?因为它仍然不适合我
    【解决方案3】:

    答案是,在定义UIWindow的时候,需要定义为

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    

    而不是严格的坐标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多