0

カスタム ビュー (nib から作成) を s 内に配置したいと思いますUITableViewCell。カスタム ビューで独自のシングル タッチを宣言しない限り、これは問題なく機能しますUIPanrecognizer。そのような場合、カスタム ビューはパン イベントに応答しますが、テーブル ビュー内のセルをスクロールする機能がほとんど無効になります。UIPanRecognizer をセルとカスタム ビューの両方に登録しようとしましたが、その機能は IOS 9 以降では許可されていないようです (これは、Apple がタッチ イベントの処理を望んでいる方法でもないようです。タッチ イベントが必要であることをどこかで読みました1 つのビューで処理するだけです)

また、テーブル ビューをプログラムでスクロールする方法も見つけられませんでした。

カスタム ビュー内のパン イベントに応答できるようにしながら、UITableView のパン動作を維持したい場合、どのようなオプションがありますか?

私の使用例は次のとおりです。アプリの別の部分用に作成した、横スクロールできるカスタム ビューを再利用したいと考えています。私のテーブル ビューは、下向きのパンにのみ反応するように設定されています。したがって、2 つのパン アクションは干渉しません。

これを現在解決している 2 つの方法は次のとおりです。 横スクロールは 2 本指のパンに反応します。これは非常に厄介で直感的ではありません。

カスタム ビューでのすべてのジェスチャ (タップを除く) は、そのスーパービューに送信されます。カスタム ビューをタップすると、再ルーティングが無効になり、テーブル ビューがロックされ、カスタム ビューが横方向のパンに反応するようになるため、横方向のスクロールが有効になります。もう一度タップすると、最初の動作が復元されます。これは、1 つのアクションに対して 3 つの別々のアクションを実行するようにユーザーに要求するため、厄介です。

テーブル ビューの横方向のパンを有効にできることはわかっていますが、セル内でカスタム ビューを再利用したいという問題は解決しません。

このジレンマの解決策を知っている人はいますか?

4

1 に答える 1

0

解決策は、カスタムを作成することでしたUIGestureRecognizer

私はこのチュートリアルに従い、カスタムを作成し、SidewaysPanGestureRecognizer代わりにそれを登録し、ビューがジェスチャーを処理する必要があるかどうかを決定するメソッドをSidewaysPanGestureRecognizer実装することにより、すべてのジェスチャーをスーパービューに渡しました。UIGestureRecognizerDelegate

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, 
     shouldReceiveTouch touch: UITouch) -> Bool {
    return gestureRecognizer is SidewaysPanGestureRecognizer
}
于 2016-03-24T05:55:15.117 に答える