मेरी समस्या: मेरे पास एक पर्यवेक्षक है EditView
जो मूल रूप से पूरे एप्लिकेशन फ़्रेम को MenuView
लेता है , और एक सबव्यू जो केवल नीचे ~ 20% तक होता है, और फिर MenuView
इसका अपना सबव्यू होता है ButtonView
जो वास्तव में MenuView
सीमा के बाहर रहता है (ऐसा कुछ:) ButtonView.frame.origin.y = -100
।
(ध्यान दें: EditView
अन्य साक्षात्कार हैं जो MenuView
पदानुक्रम के दृश्य का हिस्सा नहीं हैं , लेकिन उत्तर को प्रभावित कर सकते हैं।)
आप शायद पहले से ही इस मुद्दे को पता है: जब ButtonView
की सीमा के भीतर है MenuView
(या, और अधिक विशेष रूप से, जब मेरे छूता भीतर कर रहे हैं MenuView
की सीमा), ButtonView
प्रतिक्रिया की घटनाओं को छूने के लिए। जब मेरा स्पर्श MenuView
सीमा के बाहर होता है (लेकिन फिर भी ButtonView
सीमा के भीतर ), कोई स्पर्श घटना प्राप्त नहीं होती है ButtonView
।
उदाहरण:
- (()
EditView
सभी विचारों का जनक है - (M)
MenuView
, EditView का एक उप-भाग है - (बी)
ButtonView
MenuView का एक उपक्षेत्र है
चित्र:
+------------------------------+
|E |
| |
| |
| |
| |
|+-----+ |
||B | |
|+-----+ |
|+----------------------------+|
||M ||
|| ||
|+----------------------------+|
+------------------------------+
क्योंकि (B) बाहरी (M) फ्रेम है, (B) क्षेत्र में एक टैप कभी भी (M) को नहीं भेजा जाएगा - वास्तव में, (M) इस मामले में कभी भी स्पर्श का विश्लेषण नहीं करता है, और स्पर्श को भेजा जाता है पदानुक्रम में अगली वस्तु।
लक्ष्य: मैं इकट्ठा करता हूं कि ओवरराइडिंग hitTest:withEvent:
इस समस्या को हल कर सकती है, लेकिन मुझे समझ में नहीं आता कि कैसे। मेरे मामले में, (मेरे 'मास्टर' पर्यवेक्षण) को hitTest:withEvent:
ओवरराइड किया जाना चाहिए EditView
? या इसे ओवरराइड किया जाना चाहिए MenuView
, बटन का प्रत्यक्ष पर्यवेक्षण जो स्पर्श नहीं प्राप्त कर रहा है? या मैं इस बारे में गलत सोच रहा हूं?
यदि इसके लिए एक लंबी व्याख्या की आवश्यकता है, तो एक अच्छा ऑनलाइन संसाधन मददगार होगा - सिवाय Apple के UIView डॉक्स के, जिन्होंने मुझे यह स्पष्ट नहीं किया है।
धन्यवाद!