0

私はMGSplitView、テーブルビューを含むアプリと、UIWebView横向きに固定されたアプリを持っています。Web ビューにはUITapGestureRecognizer(トリプルタップ用) が Web ビューに添付されています。Web ビューの左側の部分をタップすると機能します。Web ビューの右側のタップは失われます。アクションはトリガーされず、ジェスチャ デリゲート メッセージは受信されません。

MGSplitViewControllerへの切り替えにUISplitViewControllerも同じ問題があるため、問題は にあるようには見えません。タップから長押しに変更しても同じ結果になります。

タップ位置は、x座標がgesture.viewの最大幅またはそれに近い値で報告されますが、明らかにディスプレイの中央近くに作られています。これは問題の根本に関係していると思いますが、それでもWeb ビューのコンテンツがはっきりと表示され、正しく配置されています。

関連するすべてのビュー コントローラは と を実装shouldAutorotatesupportedInterfaceOrientationsているため、縦向きに固執する可能性は低いと思われます。つまりMGSplitViewController、私のUITableViewサブクラス (左側のパネル) とUIViewController右側のパネルのサブクラスです。

私のジェスチャ認識エンジンは、1 回のトリプルタップ (右側のパネルの Web ビューのビュー) からの委任と出力を行います。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    NSLog(@"%s", __PRETTY_FUNCTION__);
    NSLog(@"gestureRecognizer view frame: %@", NSStringFromCGRect(gestureRecognizer.view.frame));
    NSLog(@"location %@", NSStringFromCGPoint([gestureRecognizer locationInView:gestureRecognizer.view]));
    return YES;
}

-[DocumentBrowser gestureRecognizer:shouldReceiveTouch:]
gestureRecognizer view frame: {{0, 0}, {703, 704}}
location {703, -20}
-[DocumentBrowser gestureRecognizer:shouldReceiveTouch:]
gestureRecognizer view frame: {{0, 0}, {703, 704}}
location {414.5, 204.5}
-[DocumentBrowser gestureRecognizer:shouldReceiveTouch:]
gestureRecognizer view frame: {{0, 0}, {703, 704}}
location {414.5, 204.5}

報告された最初の場所は奇妙に思えます。

4

1 に答える 1

1

向きとビューのサイズ変更メカニズムを確認してください。これらの領域で何かが間違っているときにこれを何度か見てきました-タッチ位置をログに記録すると、おそらく左側から768ポイントで停止することがわかると思います。つまり、それを考えるどこかにビューがあります縦向きです。

于 2012-12-31T16:14:11.413 に答える