3

ユーザーがUITableViewCellのimageViewをシングルタップまたはダブルタップしたときに通知を受け取りたいです。サブビューを imageView に追加し、サブビュー コントローラーで touchesBegan:withEvent: を使用しようとしましたが、期待したイベントをトリガーできません。どうすれば仕事をすることができますか?

4

3 に答える 3

3

もう1つの解決策:

カテゴリを UIImageView に追加して、タッチ イベントを処理します。次に、タッチ イベントごとに通知を送信し、ビュー コントローラー (またはセル コントローラー) で通知をサブスクライブします。

気分が悪い場合は、メソッド呼び出しをビュー コントローラーに転送することもできます。

次に、セルの imageView のタッチ イベントを有効にします。

[self setUserInteractionEnabled:YES];

これで、サブクラス化せずに、すべてのタッチが処理したい場所に送信されます。そしてそれは再利用可能です。

于 2009-12-01T17:27:42.770 に答える
1

上記の回答をありがとう、仕事は終わりました。

私の解決策:
  UIView をサブクラス化し、実装ファイルで touchesBegan:withEvent: をオーバーライドします
  UIView(サブビューとして)をcell.viewに追加し、imageViewの位置をカバーしてから、最も近いサブビューを透明にします(alpha = 0.015f)
  終わり。
  それは正常に動作します

:アルファ値が小さすぎる場合(0.01f)、タッチイベントがトリガーされません。理由は誰にもわかりますか?

于 2009-11-24T05:37:21.927 に答える
1

私のプロジェクトでは、UIImageView をサブクラス化してユーザー インタラクションを追加しました。便利な場合は、Apple サンプル コード、プロジェクト「TapToZoom」を参照してください。つまり、ユーザー インタラクションを有効にする必要があり、その後で初めて UIImageView がタッチに応答し始めます。これは、userInteractionEnabled プロパティを設定することによって行われます。

[self setUserInteractionEnabled:YES];

次に、たとえば次のようにして、他の touches プロパティをカスタマイズできます。

[self setMultipleTouchEnabled:YES];
twoFingerTapIsPossible = YES;

それ以外の場合は、たとえば、写真アプリのようなサムネイル ビューを実装することができます。目的に応じて、背景画像を設定できる UIButton の使用を検討することもできます。各 tableView 行にプログラムで 4 つの UIButtons を配置するだけで、元の写真アプリの写真サムネイル ビューを模倣するプロジェクトがあり、正常に動作します。乾杯

于 2009-11-23T09:25:44.613 に答える