Benim sorun: Bir Superview var EditView
temelde tüm uygulama çerçevesini kaplıyor ve bir subview MenuView
sadece alt ~% 20 kadar sürer ve sonra MenuView
kendi subview içeren ButtonView
aslında dışında bulunduğu MenuView
bireyin sınırları (böyle bir şey: ButtonView.frame.origin.y = -100
).
(not: görünüm hiyerarşisinin bir EditView
parçası olmayan MenuView
, ancak yanıtı etkileyebilecek başka alt görünümlere sahiptir .)
Muhtemelen sorunu zaten biliyorsunuzdur: ne zaman ButtonView
sınırları dahilinde olduğunda MenuView
(veya daha spesifik olarak, dokunuşlarım MenuView
sınırlar içinde olduğunda ), ButtonView
dokunma olaylarına yanıt verir. Dokunuşlarım MenuView
sınırlarının dışında (ancak yine de ButtonView
sınırları içinde) olduğunda, dokunma olayı almıyor ButtonView
.
Misal:
- (E),
EditView
tüm görünümlerin ebeveynidir - (M),
MenuView
EditView'ın bir alt görünümüdür - (B)
ButtonView
MenuView'un bir alt görünümüdür
Diyagram:
+------------------------------+
|E |
| |
| |
| |
| |
|+-----+ |
||B | |
|+-----+ |
|+----------------------------+|
||M ||
|| ||
|+----------------------------+|
+------------------------------+
(B), (M) çerçevesinin dışında olduğu için, (B) bölgesindeki bir dokunma asla (M) 'ye gönderilmez - aslında, (M) bu durumda dokunuşu asla analiz etmez ve dokunma hiyerarşideki bir sonraki nesne.
Amaç: Üstesinden gelmenin hitTest:withEvent:
bu sorunu çözebileceğini anlıyorum, ancak tam olarak nasıl olduğunu anlamıyorum. Benim durumumda, hitTest:withEvent:
geçersiz EditView
kılınmalı ('ana' denetimim)? Yoksa MenuView
dokunuşları almayan düğmenin doğrudan denetiminde geçersiz kılınmalı mı? Yoksa bunu yanlış mı düşünüyorum?
Bu, uzun bir açıklama gerektiriyorsa, Apple'ın UIView belgeleri dışında iyi bir çevrimiçi kaynak yardımcı olacaktır, ancak bunu bana netleştirmemişti.
Teşekkürler!