2011-08-02 16 views
6

मैं दो बार देखा गयाकिसी अन्य दृश्य के पीछे एक दृश्य पर स्पर्श करें?

  • शीर्ष दृश्य कुछ अपारदर्शी और कुछ पारदर्शी क्षेत्रों
  • नीचे दृश्य कुछ क्लिक करने योग्य बटन है।

शीर्ष दृश्य पूरी तरह से नीचे के दृश्य को कवर कर रहा है, लेकिन शीर्ष दृश्य में पारदर्शी क्षेत्र हैं, नीचे दृश्य अभी भी देखा जा सकता है।

लेकिन, मैं नीचे दृश्य पर बटन क्लिक का पता नहीं लगा सकता क्योंकि शीर्षदृश्य इसे अवरुद्ध कर रहा है, मुझे क्या करना चाहिए?

क्या वैसे भी शीर्ष दृश्य को देखने के लिए स्पर्श को देखने के लिए है?

उत्तर

4

मेरे अपने प्रश्न के लिए मेरा समाधान, उम्मीद है कि यह किसी की मदद करेगा।

सामने के दृश्य में, touchesEnded:withEvent प्रतिनिधि के लिए सुनो।

जब यह प्रतिनिधि आग लगती है, तो आप जानते हैं कि कोई उपयोगकर्ता सामने के दृश्य को छू रहा है।

अगला आपको यह जांचने की आवश्यकता है कि उंगली की स्थिति बोटम दृश्य में विशेष क्षेत्रों को छूती है या नहीं।

क्या करना है:

1) नीचे देखने के सापेक्ष इंगित कन्वर्ट:

UITouch *touch = [touches anyObject]; 
CGPoint touchPointInLowerView = [touch locationInView:self.lowerViewController.view]; 
BOOL isLowerButtonClicked = [self.lowerViewController isFingerOnYourButton:touchPointInLowerView]; 
if(isLowerButtonClicked) 
{ 
// lower button clicked 
} 

2) कम दृश्य

- (BOOL) isFingerOnYourButton:(CGPoint)point 
{ 
return CGRectContainsPoint(self.aButton.frame, point); 
} 

देखा है। इस तरह, हम नीचे के दृश्य में क्लिक का पता लगा सकते हैं, यहां तक ​​कि इसे शीर्ष पर एक और इंटरैक्टिव दृश्य द्वारा अवरुद्ध किया गया है।

+0

मुझे यह करने की ज़रूरत है, लेकिन मुझे समझ में नहीं आता कि कैसे: छूने के लिए सुनो: एक प्रतिनिधि के साथ, प्रतिनिधि प्रतिनिधि, आदि के साथ। मुझे जो कुछ भी बुलाओ, लेकिन मुझे यह सब देखना होगा। – Morkrom

1

शीर्ष दृश्य उस दृश्य के नीचे ब्लॉक कर रहा है में उपयोगकर्ता बातचीत बंद करें:

topView.userInteractionEnabled = NO; 
+0

दुर्भाग्यवश शीर्ष दृश्य एक स्क्रोल करने योग्य दृश्य है ... बातचीत की आवश्यकता है .. – mkto

1

आप बिल्कुल छूता है पर प्रतिक्रिया के लिए शीर्ष (या इसके subviews के किसी भी) दृश्य नहीं करना चाहते हैं, तो आप उस दृश्य के लिए userInteractionEnabled संपत्ति को NO पर सेट कर सकते हैं और इसके साथ किया जा सकता है।

अन्यथा, आपका सर्वश्रेष्ठ दांव शीर्ष दृश्य के वर्ग में pointInside:withEvent: या hitTest:withEvent: ओवरराइड करने के लिए है। यदि शीर्ष दृश्य और निचला दृश्य भाई बहन हैं, तो इसे pointInside:withEvent: से वापस करने के लिए पर्याप्त होना चाहिए; यदि वे दृश्य पदानुक्रम में आगे अलग हो जाते हैं, तो पारदर्शी क्षेत्रों के लिए नीचे दृश्य को स्पष्ट रूप से वापस करने के लिए आपको hitTest:withEvent: ओवरराइड करना पड़ सकता है।

+0

दुर्भाग्यवश शीर्ष दृश्य एक स्क्रॉल करने योग्य दृश्य है ... बातचीत की आवश्यकता है। मैं आपके दूसरे प्रस्ताव को देखूंगा ... धन्यवाद .. इसे अपडेट करने के बाद मुझे कुछ भी मिला। इस बीच किसी के पास अन्य सुझाव हैं जो मुझे बताते हैं। – mkto

संबंधित मुद्दे