1

を持つシングルビューアプリに取り組んでいUITapGestureRecognizerます。iPad で試してみると、タップが認識されないことに気付きました。1x/2x ボタンでアプリをズームした後、タップが機能し始めました。私は何を間違っていますか?

これを非常に小さなサンプルに絞り込みました。XCodeの「Single View Application」から始めました。以下は次のとおりです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 リポジトリにあるので、全体を表示したり試したりすることができます。XCode 4.5.1、iPad Retina、iOS 6.0.1。

4

1 に答える 1

1

アプリの plist の「サポートされているインターフェイスの向き」の下にあるすべてのエントリを削除すると、この問題は解決することがわかりました。または、Target 設定の [概要] 画面で [ステータス バー] 設定の [アプリケーションの起動中に非表示にする] オプションをオンにすると、これも修正されます。

アプリケーションの起動中に隠す

これらのオプションのいずれかでこのバグを修正できるという論理的な理由はありませんが、どちらも修正できます。

supportedInterfaceOrientations明らかに、iOS 6 で「サポートされているインターフェイスの向き」オプションをいじっても、 ( shouldAutorotateToInterfaceOrientation:iOS 5 では)を介して許可された向きをプログラムで制御できます。

于 2012-11-26T04:05:20.607 に答える