在横向模式下启动Three20示例项目会使屏幕的一半无法响应触摸事件

时间:2010-02-03 19:13:15

标签: iphone three20

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

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

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

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

3 个答案:

答案 0 :(得分:3)

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

Ergo:如果父视图不适合新宽度,屏幕的右侧部分可能会使用不可触摸的内容进行渲染。

答案 1 :(得分:0)

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

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

到您的视图控制器。

答案 2 :(得分: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];
}