3

これが私のコードです....

UIView *View1 = [[UIView alloc] initWithFrame:CGRectMake(0, 300, 1000, 150)];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(callTap)];
[View1 addGestureRecognizer:tap];
view1.userInteractionEnabled = true;
view1.layer.zPosition=1;
[self.view addSubview:view1];

UIView *View2 = [[UIView alloc] initWithFrame:CGRectMake(0, 300, 1000, 150)];
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(callPinch)];
[View2 addGestureRecognizer:pinch];
View2.userInteractionEnabled= true;
View2.layer.zPosition=2;
[self.view addSubview:View2];

UIView *View3 = [[UIView alloc] initWithFrame:CGRectMake(0, 300, 1000, 150)];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(callPan)];
[View3 addGestureRecognizer:pan];
View3.userInteractionEnabled=true;
View3.layer.zPosition=3;
[self.view addSubview:View3];

コードに追加された単一のジェスチャのみをビューに認識させ、他のものを下のビューに渡したい....
この機能を実現するにはどうすればよいですか?

4

1 に答える 1

6

この質問に答えるのは非常に簡単でした.....
iOSでジェスチャーを認識する場合、一番上のビューは常にユーザーのタッチを受け取るため、ジェスチャーの認識は、サブビューがどのように積み重ねられているかによって異なります。つまり、SuperViewのプロパティでどのように配置されているか名前付きサブビュー....複数のサブビューが画面の同じタッチポイントを保持している場合、サブビューのインデックス値が高いビューがタッチされます..そして一般的に、インデックス値が高いビューは他のビューの上にも表示されます....

ZPosition に関しては、興味深いものになります。ZPosition をより高い値に変更すると、インデックス位置を変更せずにビューが表示されます。この場合、インデックス 0 のサブビューも完全に表示される可能性がありますが、表示されません。まだゼロインデックス上にあるため、すべてのタッチを受け取ることを意味します.....ゼロインデックスのサブビューを作成してすべてのタッチを受け取りたい場合は、UIView クラスのメソッドを使用して他のものの上に表示します.. ...
Gesture と ZPosition を一緒に使用しないでください。アプリの操作中にユーザーを混乱させる可能性があります。

于 2013-04-04T09:22:56.227 に答える