1

我遇到过很多次这个问题,只是无法找到解决方案......

我们的大多数应用程序仅在横向模式下运行,而我现在正在开发的应用程序(以及我过去开发过的许多应用程序)显示以下行为 - 首次启动时,应用程序在横向模式下正确显示,但是屏幕右侧的任何按钮都无法按下。该应用程序的行为就好像它只识别在应用程序处于纵向模式时可见的屏幕部分上的触摸,而忽略屏幕右侧的任何触摸。如果我单击另一个 viewController,然后返回有问题的 viewController,它会对屏幕上的所有触摸做出正确反应。仅在首次启动时,应用程序才会认为它在纵向运行并且无法识别 768x1024 区域(或 1536x2048 或 320x480 或 640x960)右侧的触摸

所以我看到的可视区域为 1024x768,但只能点击屏幕前 768 像素中的按钮(最右边的 256 像素无法访问)

我尝试过的一种解决方法(成功有限 - 它以前曾有效,但并不总是有效,现在也无效)已将这些行包含在多个位置,例如 AppDelegate.m、rootViewController.m 和在具有上述问题的特定 viewController.m 中:

self.view.frame = CGRectMake(0.0, 0.0, 1024.0, 768.0);

//I've also tried:

CGRect landFrame = self.view.frame;
landFrame.size.width = self.view.frame.size.height;
landFrame.size.height = self.view.frame.size.width;
self.view.frame = landFrame;

有任何想法吗?


.plist 值包括:

初始界面方向 - 横向(右主页按钮)

支持的接口方向:

  • 项目 0 - 横向(右主页按钮)
  • 第 1 项 - 横向(左主页按钮)

我在 rootViewController 和特定的 viewController 中有这段代码:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (UIInterfaceOrientationIsLandscape(interfaceOrientation));

    //I've also tried:
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
4

1 回答 1

0

这是我发现的最有用的东西:

在应用程序委托 didFinishLaunchingWithOptions 中:

更改 [window addSubview:navigationController.view];

到 [window setRootViewController:navigationController];

并在 Root ViewController 中,更改

– (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

到:

  • (BOOL) 应该自动旋转 {

返回是;

}

并在 .plist 文件中设置支持的接口方向

于 2013-11-09T05:51:08.333 回答