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