2 つのビューがあり、そのうちの 1 つにボタンが含まれています。
UIView *view1, *view2;
UIButton *button;
[view1 addSubview:button];
どちらも親ビューの上にあり、view2 が上にあります (zPosition 値が大きくなっています)。
UIView *parentView;
view1.layer.zPosition = 10;
view2.layer.zPosition = 0;
[parentView addSubview:view1];
[parentView addSubview:view2];
この順序でサブビューを追加した場合のみ (view1 が最初、view2 が 2 番目)、ボタン (view1 内) が UIControlEventTouchUpInside イベントに応答しません。順序を逆にすると、すべてが機能しました。
[parentView addSubview:view2];
[parentView addSubview:view1];
UIControlEventTouchUpInside イベントは機能しませんでしたが、最初のケース (view1 が view2 の上に表示された) でも視覚的にはすべて問題ありませんでした。addSubview メッセージの順序は、UIControlEventTouchUpInside イベントにのみ影響を与えました。
追加: 私の質問は: 説明されている方法の 1 つだけが機能するのはなぜですか?