0

YouTube iOS Player Helper Viewを使用していますが、プレーヤー自体は素晴らしく機能します。ただし、ユーザーがビデオをタップして再生を開始できるようにしたいと考えています。YTPlayerView に UITagGestureRecognizer を追加しようとしましたが、タップが登録されませんでした。

ビューに UIButton を追加し、YTPlayerView に再生を指示する IBAction に接続し、正常に動作しました。ただし、ユーザーがビデオ自体をタップしたかのように見せたいです。そこで、UIButton のサイズを YTPlayerView と同じサイズに変更し、UIButton を YTPlayerView の上に配置しました。

UIButton のタップが機能しなくなりました....ほとんど。YTPlayerView の左、右、または下をタップしても機能しません。YTPlayerView の上のタップは引き続き通過します。したがって、UIButton を 10 ピクセル上にシフトすると、10 ピクセルのストリップをタップするだけで IBAction が呼び出されます。UIButton を 10 (または 30) ピクセル左、右、または下に移動すると、どのタップも IBAction に到達しません。

下の画像では、UIButton の背景が緑色で透明になっているため、その背後にあるものを見ることができます。(完全に不透明でこれをテストしましたが、同じように動作します。透明度は問題ではありません。) 赤いボックス内の緑の領域 (つまり、YTPlayerView の上) をタップすると、IBAction が期待どおりに呼び出されます。赤いボックスの外側の緑の領域 (つまり、YTPlayerView の左、右、または下) をタップすると、IBAction を受信しませんでした。

このビュー全体が UIScrollView に含まれています。UITapGestureRecognizer を self.view に追加しようとしましたが、YTPlayerView をタップしようとすると、YTPlayerView ではなく UIScrollView にヒットしたかのようにタップが配信されます。

画像

4

1 に答える 1

0

スクロールビューへのタッチを無視するか、スクロールビューからボタンへのタッチを転送します

プレイヤービューにジェスチャーを追加する

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{

    if (someScrollView.superview != nil) {
        if ([touch.view isKindOfClass:[UIButton class]])
            {
            return YES; // handle the touch
            }
    }
    return NO; // ignore the touch

}
于 2014-10-14T12:33:14.340 に答える