2

ネットで色々と調べてみましたが、具体的なことはわかりませんでした。大した問題ではないと思いますが、よくわかりません。

私はUIImageView「A」に取り組んでおり、その「A ImageView」のサブビューとして他のUIImageViewを追加します。UserInteraction は、すべてのサブビューで有効になっています。TouchBegan メソッドで、「A ImageView」のサブビューの配列を取得し、それを Touch.view と比較します。ただし、 touch.view は常に親、つまり「A ImageView」と等しく、タッチされたサブビューを返すことはありません。

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

事前に感謝し、あなたの応答を楽しみにしています。

よろしく、

4

2 に答える 2

0

imageview をボタンとして使用するのは間違っていると思いますが、これを行うことを主張する場合は、次のことを試してください。

imageview をサブクラス化することで、hitTest メソッドを書き直すことができます。

- (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 コードを作成する必要があります。

- (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

于 2012-05-08T08:57:44.170 に答える
0

サブビューの相互作用は有効になっていますか? はいの場合は、動的に追加する主要なビューとサブビューごとに個別のタグを付けてみましたか?タグを表示してタッチを確認しましたか...

于 2012-05-07T13:36:20.590 に答える