Ios UITapGestureRecognitor在iPad上横向出现故障

Ios UITapGestureRecognitor在iPad上横向出现故障,ios,ipad,ios6,landscape,uitapgesturerecognizer,Ios,Ipad,Ios6,Landscape,Uitapgesturerecognizer,我正在开发一个单视图应用程序,它有一个uitappesturerecognizer。我注意到,当我在我的iPad上试用它时,水龙头没有被识别出来。在我用1x/2x按钮缩放应用程序后,点击开始工作。我做错了什么 我已经把范围缩小到一个很小的样本。我从XCode“单视图应用程序”开始,下面是viewDidLoad: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading t

我正在开发一个单视图应用程序,它有一个
uitappesturerecognizer
。我注意到,当我在我的iPad上试用它时,水龙头没有被识别出来。在我用1x/2x按钮缩放应用程序后,点击开始工作。我做错了什么

我已经把范围缩小到一个很小的样本。我从XCode“单视图应用程序”开始,下面是
viewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    info = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 200, 20)];
    [self.view addSubview:info];

    tapper = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
    [self.view addGestureRecognizer:tapper];
}
以下是我目前所知道的:

  • 在iPhone大小的屏幕上工作
  • 在iPad上以纵向方向工作
  • 在iPad上横向显示失败,直到视图以1x/2x缩放,然后开始工作(并在缩放回原始缩放级别后继续工作)
  • 与iPad模拟器表现出相同的行为

完整的代码在一个文件夹中,因此您可以查看整个内容或进行尝试。XCode 4.5.1、iPad retina、iOS 6.0.1。

我发现,如果我删除应用程序plist中“支持的界面方向”下的所有条目,这个问题就会消失。或者,如果您选中目标设置摘要屏幕上“状态栏”设置的“应用程序启动期间隐藏”选项,这也会修复它:

我看不出有任何逻辑上的原因,这两个选项都可以修复这个bug,但它们都可以


显然,如果你在iOS 6中使用“支持的界面方向”选项,你仍然可以通过(在iOS 5中)编程控制允许的方向。

我发现,如果我删除应用程序列表中“支持的界面方向”下的所有条目,这个问题就会消失。或者,如果您选中目标设置摘要屏幕上“状态栏”设置的“应用程序启动期间隐藏”选项,这也会修复它:

我看不出有任何逻辑上的原因,这两个选项都可以修复这个bug,但它们都可以


显然,如果您在iOS 6中使用“支持的界面方向”选项,您仍然可以通过(在iOS 5中)以编程方式控制允许的方向。

对我来说,该项目从一开始就可以在iPad模拟器中正常工作,无需缩放。@ParamasivanSamuttiram:很有趣,谢谢。我想知道会有什么不同。@GregHewgill我看到的行为与我在横向模式下启动时的行为相同。对我来说,这个项目从一开始就在iPad模拟器中运行良好,没有缩放功能。@ParamasivanSamuttiram:很有趣,谢谢。我想知道会有什么不同。@GregHewgill我看到的是你在横向模式下启动它时所做的相同行为。这似乎是一个iOS 6错误,我已经通过报告了它。如果我删除所有支持的界面方向,应用程序似乎总是在纵向模式下启动,即使在横向模式下在iPad上也一样。也就是说,状态栏移动到屏幕的一侧(短侧),然后返回顶部(长侧)。当然,受支持的界面方向设置控制应用程序启动时发生的情况,然后再运行其任何代码。(我的应用程序是专为横向模式设计的。)感谢您提交问题的错误报告(我同意这似乎是一个错误),但不幸的是,这个解决方案似乎不适合我。就是这样!如果我从最初的项目开始(就像在GitHub上一样),并在状态栏中简单地勾选“在应用程序启动期间隐藏”,那么最初的问题似乎神秘地消失了。我仍然希望在应用程序运行时显示状态栏,因此我在
viewDidLoad
中设置了应用程序
statusBarHidden=NO
。这会导致在加载应用程序时,状态栏消失一小段时间,然后重新出现,目前这是可以接受的。这似乎是一个iOS 6错误,我已通过报告。如果我删除所有支持的界面方向,应用程序似乎总是以纵向模式启动,即使在iPad上以横向模式启动。也就是说,状态栏移动到屏幕的一侧(短侧),然后返回顶部(长侧)。当然,受支持的界面方向设置控制应用程序启动时发生的情况,然后再运行其任何代码。(我的应用程序是专为横向模式设计的。)感谢您提交问题的错误报告(我同意这似乎是一个错误),但不幸的是,这个解决方案似乎不适合我。就是这样!如果我从最初的项目开始(就像在GitHub上一样),并在状态栏中简单地勾选“在应用程序启动期间隐藏”,那么最初的问题似乎神秘地消失了。我仍然希望在应用程序运行时显示状态栏,因此我在
viewDidLoad
中设置了应用程序
statusBarHidden=NO
。这会导致在加载应用程序时状态栏消失一小段时间,然后重新出现,目前这是可以接受的。