1

我有兴趣为主要面向横向的 iPhone OS 开发基于Three20的应用程序。

我下载了 Three20示例项目模板,将它们加载到 Xcode 中,并在模拟器和使用 3.0、3.1、3.1.2 SDK 的设备上正常启动了示例项目应用程序。当我在项目文件中Initial interface orientation更改为时,项目按预期以该方向启动,但仅响应屏幕左侧的触摸事件。它似乎仍在响应触摸事件,就好像它仍处于纵向模式一样。我对示例项目所做的唯一更改是更改文件。Landscape (right home button)Info.plistInfo.plist

我错过了一些非常简单的东西吗?从横向开始似乎是一个非常基本的用例 - 但在谷歌搜索了几天后,我找不到其他人提交了问题报告或博客文章。

注意:这是我最初在一个更高级的项目中引入横向时遇到的问题,但我备份到最基本的可重复示例以排除任何其他代码作为问题的根源。

4

3 回答 3

3

确保所有视图都具有正确的autoresizingMask属性集。由于大多数视图不会裁剪到边界,因此内容在 parentView 的边界之外也是可见的。然而,触摸总是被裁剪到边界,这可能导致子视图在父视图边界之外可见,但不可触摸。

Ergo:如果父视图不适合新的宽度,屏幕的右侧部分可能会呈现不可触摸的内容。

于 2010-02-12T09:50:55.923 回答
0

您是否使用特定视图?它可以像需要添加一样简单:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation
{
        return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

到您的视图控制器。

于 2010-02-03T20:04:25.117 回答
0
- (void)viewWillAppear:(BOOL)animated 
{
 if (![System isIpad])
 {
  if (([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortrait) ||
   ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortraitUpsideDown))
  {
   [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
  }
 }
 [super viewWillAppear:animated];
// self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;
// self.navigationBarTintColor = [UIColor clearColor];
 self.navigationController.navigationBarHidden = YES;
 [[UIApplication sharedApplication] setStatusBarHidden:FALSE];
}
于 2010-09-15T08:16:45.297 回答