जिस तरह से मैंने इस समस्या को हल किया है वह इस तरह से है कि यह साफ नहीं है, लेकिन यह काम करता है। अगर ऐसा करने का बेहतर तरीका है तो कृपया मुझे बताएं।
मैंने अपने कस्टम UIView
के लिए hitTest
ओवरराइड किया है ताकि यह नीचे UITableView
पर स्पर्श को निर्देशित कर सके। फिर UITableView
में मैं touchesBegan
, touchesMoved
इत्यादि के माध्यम से इशारा कर रहा हूं। वहां मैं पर UIView
पर भी कॉल कर रहा हूं।
इस तरह स्पर्श को दो विचारों से नियंत्रित किया जाता है। कारण मैं अन्य तरीकों से नहीं कर रहा हूं (UIView
के touchesBegan
UITableView
के touchesBegan
पर कॉल कर रहा है) यह है कि UITableView
पर इशारे पहचानकर्ता काम नहीं करेंगे।
UIView
उपवर्ग 'hitTest
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
// tview is the UITableView subclass instance
CGPoint tViewHit = [tView convertPoint:point fromView:self];
if ([tView pointInside:tViewHit withEvent:event]) return tView;
return [super hitTest:point withEvent:event];
}
UITableView
उपवर्ग के touchesBegan
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:touch.view];
// ....
// view is the UIView's subclass instance
[view touchesBegan:touches withEvent:event];
}
स्रोत
2011-12-08 21:40:06
बहुत अच्छा .. मैं थोड़ी देर के बाद कुछ करने के लिए देख रहा था। पोस्ट करने का शुक्रिया। – riship89
मुझे यह वाकई पसंद है। मैंने सबव्यू पर मैन्युअल रूप से टच्सबेगन आदि को बुलाकर गलत तरीके से करने की कोशिश की। यह विधि बहुत अच्छा काम करता है! – Gandalf458