1

CollectionViewセルに画像があります。セル、またはセル内の画像について、異なる関数を呼び出す 2 つのタッチ動作を実装したいと考えています。

1) UIImage を通常の (短く) タップすると、View with Details が呼び出されます 2) UIImage を長押しすると、ポップアップが表示されます

現在、これを最適に実装する方法が明確ではありません。

一方では、そのために UIButton を使用しようとすることができます。つまり、Image を持つ UIButton があります。次に、オプション 1)Touch up insideとオプション 2) に使用できますTouch down。しかし、私の頭の中でTouch downは、両方のケースで a が行われたと言っています.iosは、それが短いタップであり、タッチアンドホールドではないことをどのように知ることができますか...システムがそれを区別するのを助ける必要がありますか? それに加えて、すべての画像 (大量になる可能性があります) を UIButton として持つのは奇妙に思えます。UIButtonに2タッチを割り当てることはできますか?

一方、UIImage にとどまって、、、および を使用することも touchesBeganできtouchesMovedますtouchesEnded。そして、タッチに費やした時間をチェックする関数を書きます...ここでは、2つの異なる関数を呼び出すことができると思います。

両方: CollectionView のスクロール動作に干渉しますか? スクロールはタッチ&ホールド&ドラッグなので…?

タッチ イベントのリファレンス

何か案は?

乾杯 -- ジェリック

4

1 に答える 1

0

これは、特に UIGestureRecognizer の優れたアプリケーションUITapGestureRecognizerですUILongPressGestureRecognizer。両方とも、各画像または各セルに添付できます。画像に添付するときは、必ずuserInteractionEnabledプロパティを YES に設定してください。

また、コレクション ビュー セルは再利用されるため、追加する前にビューの GestureRecognizers 配列の数を確認する必要があります。

タップの開始であるタッチダウンと長押しの開始であるタッチダウンを区別することは、ソフトウェアの仕事ではなく、占いです。唯一の代替手段は、ソフトウェアに関係なく、リリースのタップを認識することです ( の場合state == UIGestureRecognizerStateRecognized)。

競合する 2 つのジェスチャは、 を使用して対話する必要がありrequireGestureRecognizerToFail:ます。こちら のリファレンスを参照してください。

于 2013-06-12T20:30:14.683 に答える