0

別の UIImageView を含む UIImageView を作成するとします。ただし、サブビューは最初のビューよりも大きくなっています。

ここに画像の説明を入力

緑色のサブビューは、そのスーパービューである黒い四角形よりもかなり大きくなっています。左上の黒い四角だけをタッチすると、期待どおりの「touchbegan image1」が表示されます。黒い四角と緑の四角が重なっている領域をタッチすると、期待通りの「touchbegan image1」と「touchbegan image2」が表示されます。 これが私の質問です。 緑の四角だけが存在する黒い四角の枠の外側の領域に触れると、出力が得られません。したがって、TouchesBegan は image1 と image2 のどちらに対しても呼び出されません。この場合、 image1 (Black) のサブビューとして image2 (Green) を維持しながら、緑色の四角形のみに触れると、 image2 (Green) に対して TouchesBegan が呼び出されるようにします。それは可能ですか?

    MyImage image1 = new MyImage(new RectangleF(0,0,200,200), "image1");
    image1.BackgroundColor = UIColor.Black;
    this.View.AddSubview(image1);

    MyImage image2 = new MyImage(new RectangleF(50,50,500,500), "image2");
    image2.BackgroundColor = UIColor.Green;
    image1.AddSubview(image2);




public class MyImage : UIImageView
{

    public MyImage ( RectangleF frame, string _Name ) : base(frame)
    {
        Name = _Name;
        UserInteractionEnabled = true;
    }


    public override void TouchesBegan (NSSet touches, UIEvent evt)
    {
        base.TouchesBegan (touches, evt);

        Console.WriteLine("touchbegan " + Name);
    }
4

1 に答える 1

0

これは、image1 の子として追加するためです。Image1 は、境界/フレーム内のタッチをリッスンし、子があればそれを送信します。image2 の方が大きいかもしれませんが、その touchlistener は image1 フレームのタッチから来ています。

于 2013-02-09T10:26:52.453 に答える