景观应用程序在启动时以纵向运行 - 侧面无法访问的按钮

时间:2013-01-04 01:51:37

标签: iphone ipad touch landscape portrait

我已经多次遇到过这个问题而且无法找到解决方案......

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

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

我尝试过的一种解决方法(成功有限 - 它之前有效,但并不总是有效,现在不能正常工作)已将这些行包含在rootViewController中的多个位置,例如AppDelegate.m。 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);
}

1 个答案:

答案 0 :(得分:0)

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

在app delegate didFinishLaunchingWithOptions:

更改[window addSubview:navigationController.view];

到[window setRootViewController:navigationController];

并在Root ViewController中更改

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

为:

  • (BOOL)shouldAutorotate {

返回YES;

}

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