UITapGestureRecognizer以横向方式在iPad上失败

时间:2012-11-25 20:04:47

标签: ios ipad ios6 landscape uitapgesturerecognizer

我正在处理一个UITapGestureRecognizer的单一视图应用。我注意到,当我在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模拟器表现出相同的行为。

完整的代码位于GitHub repository中,因此您可以查看整个内容或尝试使用它。 XCode 4.5.1,iPad视网膜,iOS 6.0.1。

1 个答案:

答案 0 :(得分:1)

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

hide during application launch

没有合理的理由我可以看到这些选项中的任何一个修复此错误,但它们都可以。

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