2

私はネット上で多くを検索しましたが、特定のものを見つけることができませんでした。私はそれが非常に大きな問題ではないと思うが、私はそれを理解することができない。どのサブビューがプログラムでタッチされたかを検出する方法

私はUIImageView "A"で作業しています。次に、 "ImageView"のサブビューとして他のUIImageViewsを追加します。 UserInteractionはすべてのサブビューで有効です。今TouchBeganメソッドでは、 "ImageView"のサブビューの配列を取得し、それをTouch.viewと比較します。 touch.viewは常に親、すなわち「A ImageView」と等しく、決してタッチされたサブビューを返さない。

どのようにサブビューがタッチされたかを検出する方法を教えてください。さらに、そのサブビューをその中心を更新して新しい場所に移動します。

ご連絡ありがとうございます。

よろしく、

答えて

0

私はそれがボタンとしてImageViewのを使用することが間違っている恐れてんだけど、あなたがこれを行うには主張するならば、これらを試してみてください。

あなたはImageViewの

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    UIView *hittedView = [super hitTest: point withEvent: event]; 
    NSLog (@"self=<%p>, hitted=<%p>", self, hittedView); 
    return hittedView; 
} 
をサブクラス化することにより、hitTestメソッドを再書き込みすることができます

ログを追加して、デフォルトのhitTestが正しいサブビューを返すかどうかを確認します。

れていない場合は、私はあなたがあなたの自己によってhitTestコードを記述する必要が怖い:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    for (UIView *view in self.subviews) { 
     if (CGRectContainsPoint(view.frame, point)) { 
      return view; 
     } 
    } 
    return self 
} 

この文書では、あなたのために有用である: http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/Introduction/Introduction.html

0

が有効になってサブビューの相互作用であるとそうならば、あなたはあなたが動的に追加し、そのタグを表示してタッチを検証する主要な各ビューとサブビューに別のタグを与えてみましたが...

+0

おかげでお返事 ためユヌスはいuserInteractionが有効になっていますが、このタグロジックを試してみることはできません。試してみましょう。 –

+0

私は2つ前からサブビューにタグ付けを開始しましたが、タッチされたビューは常にタグ値0を持っています。それは親ビューのUIImageViewではなく、任意の画像ビューの有効なタグでもありません。つまり、self.viewが常にタッチされたビューとして検出されます。 –

+0

hmmmm私はあなたが何かひどく間違っていると仮定します。私はデモプロジェクトを作成しました。http://cl.ly/GRnlからダウンロードしてください。コンソールでは、self.viewのタグが1000、imageviewが500と設定ごとに表示されます。 – yunas

関連する問題