/ / किसी अन्य दृश्य के पीछे टच इवेंट कैसे प्राप्त करें? - आईओएस, उद्देश्य-सी, कोको-टच, uigesturerecognizer

दूसरे दृश्य के पीछे टच इवेंट कैसे प्राप्त करें? - आईओएस, उद्देश्य-सी, कोको-टच, uigesturerecognizer

मेरे पास दृश्य के अंदर दो सबव्यूव हैं। फ्रेम बराबर है। एक दृश्य में एक बाएं इशारा पहचानकर्ता स्वाइप है और बी व्यू में एक स्वाइप सही इशारा पहचानकर्ता है। बी ए के पीछे है इसलिए मैं केवल बाएं इशारा स्वाइप कर सकता हूं। मैं दोनों कैसे प्राप्त कर सकता हूं?

उत्तर:

जवाब के लिए 2 № 1
  1. पीठ में दृश्य जवाब नहीं देगा क्योंकि, ठीक है, यह पीछे की ओर है।
  2. दोनों संकेतों के लिए एक साथ प्रतिक्रिया करने के लिए (बाएं + दाएं एक ही समय में), एक जोड़ें UIGestureRecognizerDelegate या तो और संभाल करने के लिए shouldRecognizeSimultaneouslyWithGestureRecognizer जैसा कि नीचे सुझाव दिया गया है।
  3. यदि आप बी को एक इशारा का जवाब देना चाहते हैं, यहां तक ​​कियद्यपि यह आंशिक रूप से ए द्वारा छिपा हुआ है, अपने पदानुक्रम पर पुनर्विचार करें: ए और बी (इसे सी कहते हैं) के ऊपर एक तीसरा दृश्य जोड़ें, बी के समान आकार, अपने इशारा पहचानकर्ता के प्लेसहोल्डर के रूप में।

आपका प्रतिनिधि:

// leftGesture
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer
*)otherGestureRecognizer
{
return otherGestureRecognizer == rightGesture;
}

उत्तर № 2 के लिए 1

मैं दोनों कैसे प्राप्त कर सकता हूं?

ए को देखने के लिए दोनों इशारा पहचानकर्ताओं को जोड़ें, क्योंकि यह सामने वाला दृश्य है। चूंकि आपको बी को देखकर सही स्वाइप जेश्चर की आवश्यकता है, इसलिए बी को सही स्वाइप जेश्चर पहचानकर्ता के लिए लक्ष्य बनाएं।

आपका विचार बनाने के लिए एक बेहतर विकल्प हो सकता हैदोनों इशारा पहचानकर्ताओं के लक्ष्य को नियंत्रित करें और उपयोगकर्ता के इशारे के साथ क्या करना है इसे हल करने दें। यह जानने के व्यवसाय से विचारों को प्राप्त करने में मदद करता है कि उपयोगकर्ता इंटरफ़ेस कैसे स्थापित किया जाता है - उन्हें केवल निर्देशों का पालन करना होगा व्यू कंट्रोलर। यदि आप उस योजना को अपनाते हैं, तो आपका व्यू कंट्रोलर इस तरह दिख सकता है:

- (void)viewDidLoad
{
UISwipeGestureController *leftSwipe = [[UISwipeGestureController alloc] initWithTarget:self action:@selector(leftSwipe:)];
leftSwipe.direction = UISwipeGestureRecognizerDirectionLeft;
UISwipeGestureController *rightSwipe = [[UISwipeGestureController alloc] initWithTarget:self action:@selector(rightSwipe:)];
rightSwipe.direction = UISwipeGestureRecognizerDirectionRight;

[self.viewA addGestureRecognizer:leftSwipe];
[self.viewA addGestureRecognizer:rightSwipe];
}

- (IBAction)leftSwipe:(id)sender
{
[self.viewA doSomething];
}

- (IBAction)rightSwipe:(id)sender
{
[self.viewB doSomethingElse];
}