2013-01-02 31 views
5

संभव डुप्लिकेट निहित हैं:
Detect if CGPoint within polygonचेक अगर निर्देशांक का एक सेट एक आकार के भीतर

मैं एक UIEvent से छूता है का एक सेट के निर्देशांक की है। क्या यह जांचने का कोई तरीका है कि क्या वे एक निश्चित आकार के भीतर निहित हैं - एक बहुभुज - जिसे मैं परिभाषित कर सकता हूं?

मुझे जावा में अनुभव है, और मैं polygon कक्षा का उपयोग करता हूं और contains(int x, int y) विधि को कॉल करता हूं। कोको टच में ऐसा करने का एक समान तरीका है?

उत्तर

3

यदि आप अपने बहुभुज को CGPath के रूप में परिभाषित करते हैं, तो आप CGPathContainsPoint() का उपयोग कर सकते हैं ... क्या आप हमें अपनी एप्लिकेशन अवधारणा के बारे में और बता सकते हैं?

संपादित करें:

वहाँ भी है उच्च स्तर UIBezierPath और/या NSBezierPath .. उन वस्तुओं की दोनों एक -containsPoint विधि है।

+0

धन्यवाद। ऐसा लगता है कि मैं वास्तव में क्या देख रहा हूं। मुझे अपने जीवन के लिए यह समाधान नहीं मिला। – user1941895

+0

अच्छी तरह से, यह कोर ग्राफिक्स सी एपीआई का उपयोग कर रहा है, इसलिए यह ओब्जे-सी या सी ++ के स्तर पर नहीं है ... तो यह ओबीजे-सी क्लास दस्तावेज़ में दिखाई नहीं देगा। – nielsbot

2

CGRectContainsPoint(CGRect rect, CGPoint point)

का उपयोग कर यहाँ देखें प्रयास करें: https://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/CGGeometry/Reference/reference.html

या

Detect if CGPoint within polygon

+2

लेकिन ओपी। विशेष रूप से बहुभुज के बारे में पूछा ... – nielsbot

+0

ठीक है, तो मैं एक डुप्ली के रूप में बंद करने के लिए वोट – nielsbot

0

शायद तुम कुछ असामान्य कर रहे हैं, जैसे आप केवल चाहते छूता एक त्रिकोण या कुछ और अंदर पता लगाया जा । यदि ऐसा है, तो आप इसे अनदेखा कर सकते हैं। लेकिन चूंकि आप आईओएस के लिए नए हैं, इसलिए मैं लक्ष्य-क्रिया जोड़े या UIGestureRecognizer के साथ UIControl सबक्लास का उपयोग करने की सलाह दूंगा।

उदाहरण कोड होगी: -

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 

target में बाद में शायद आपके विचार नियंत्रक, आप विधि लागू करना होगा:

- (void)buttonPressed:(id)sender 
{ 
} 
एक इशारा पहचानकर्ता के साथ

, आप इशारा जोड़ना होगा UIView के लिए पहचानकर्ता और UIControl के साथ, एक लक्ष्य-क्रिया जोड़ी जोड़ें:

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)]; 
[self.view addGestureRecognizer:tapRecognizer]; 

- (void)viewTapped:(UIGestureRecognizer *)recognizer 
{ 
} 

ये मूल उपयोगकर्ता इंटरैक्शन के लिए सामान्य दृष्टिकोण हैं। touchesBegan & कंपनी का उपयोग करने के साथ इनके साथ सरल समय होगा, हालांकि यदि वे आपको चाहिए तो अन्य उत्तरदाताओं ने आपको कवर किया है।