2011-04-23 30 views
5

AcaniUsers में, मैंने ThumbView : UIViewUITableView के अंदर उदाहरणों का ग्रिड बनाया है। सभी thumbViews की चौड़ाई kThumbSize है। मैं कैसे पता लगा सकता हूं कि स्पर्श उसी दृश्य के अंदर समाप्त हो गया था जिसमें उन्होंने शुरुआत की थी?UIView: यह जांचने के लिए कि क्या स्पर्श उसी दृश्य के अंदर समाप्त हुआ है जिसमें उन्होंने

उत्तर

2

निम्नलिखित कार्य करता है, लेकिन मुझे यकीन नहीं है कि यह इसके बारे में जाने का सबसे अच्छा तरीका है या नहीं। मुझे ऐसा लगता है।

सभी thumbViews के बाद से सिर्फ touchesEnded में जाँच करें कि UITouch उदाहरण (यह मानते हुए self.multipleTouchEnabled = NO) की locationInView का x- निर्देशांक से कम या kThumbSize के बराबर है kThumbSize की चौड़ाई है,। इसका मतलब यह है कि स्पर्श thumbView के अंदर समाप्त हो गया। Y-coordinate की जांच करने की आवश्यकता नहीं है क्योंकि यदि स्पर्श लंबवत रूप से स्थानांतरित होते हैं, तो tableView, जिसमें thumbViews है, स्क्रॉल और स्पर्श रद्द कर दिए जाते हैं।

ThumbView : UIView में निम्नलिखित (जिसका उदाहरण हैं एक UITableView की subviews) कार्य करें:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"touchesEnded %@", touches); 
    CGPoint touchPoint = [[touches anyObject] /* only one */ locationInView:self]; 
    if (touchPoint.x >= 0.0f && touchPoint.x <= kThumbSize) { 
     [(ThumbsTableViewCell *)self.superview.superview thumbTouched:self]; 
    } 
} 

केवल रजिस्टर छूता है करने के लिए एक thumbView पर एक समय में, आप भी शायद की init उदाहरण विधि में self.exclusiveTouch = YES; सेट करना चाहते हैं ThumbView

+1

आप ऐसा करके अच्छा कोड लिख सकते हैं: 'अगर (CGRectContainsPoint (self.bounds, touchPoint)) {...} '। :) – BastiBen