2012-07-30 15 views
6

मैंने Google और Stackoverflow पर घंटों की खोज की है, लेकिन कोशिश की लेकिन कोई किस्मत नहीं।UITapGestureRecognizer के साथ didSelectRowAtIndexPath विधि को कैसे कॉल करें?

मेरे पास UITableView tblDepartment और ऊपर UISearchBar studentSearch है।

मैं एक UITapGestureRecognizer जोड़ने studentSearch पाठ बॉक्स से कीबोर्ड ख़ारिज करने के लिए उपयोगकर्ताओं द्वारा खोज बॉक्स के बाहर नल:

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)]; 
[self.tblDepartment addGestureRecognizer:gestureRecognizer]; 

- (void)hideKeyboard 
{ 
    [studentSearch resignFirstResponder]; 
} 

उसके बाद, विधि didSelectRowAtIndexPath:(NSIndexPath *)indexPath अब और जब मैं tblDepartment में पंक्ति का चयन नहीं बुलाया जाता है। मुझे पता है gestureRecognizer कारण है।

तो, मैं कीबोर्ड को कैसे छुपा सकता हूं और फिर भी उपयोगकर्ता को पंक्ति का चयन करने की अनुमति देता हूं?

मैं इस कोड की कोशिश की, लेकिन यह काम नहीं किया:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if ([touch.view isDescendantOfView:tblDepartment]) { 
     return NO; 
    } 
    return YES; 
} 
+0

क्या आप इशारा पहचानकर्ता को हटा सकते हैं, और 'tableView: didSelectRowAtIndexPath:' से पहले उत्तरदाता को इस्तीफा दे सकते हैं? – dasblinkenlight

+1

'इस्तीफा फर्स्ट रेस्पॉन्डर' – ohr

+0

@dasblinkenlight के बाद अपने इशारा पहचानकर्ता को हटाने का प्रयास करें: आपकी टिप्पणी के लिए धन्यवाद। 'TblDepartment' में लगभग 7 पंक्तियां हैं और कीबोर्ड प्रदर्शित होने पर उन्हें ओवरलैप करता है। मैं चाहता हूं कि उपयोगकर्ता पंक्तियों का चयन करने में सक्षम हों, यदि वे खोजना नहीं चाहते हैं :) तो जब वे खोज बॉक्स के बाहर टैप करते हैं, तो कीबोर्ड को खारिज कर दिया जाता है और वे नीचे पंक्तियों का चयन कर सकते हैं। –

उत्तर

14

सेट नहीं करने के लिए इशारा पहचानकर्ता cancelsTouchesInView संपत्ति, यह हाँ डिफ़ॉल्ट रूप से है, यह अंतर्निहित विचारों तक पहुंच गया है, तो जीआर अपने जेस्चर को पहचान से छूता से बचाता है ।

+1

ग्रेट समाधान। धन्यवाद। '[जेस्चर रिकॉग्नाइज़र सेट कैंसल्स टच इन व्यू: नहीं]; 'और यह काम करता है! –

+0

धन्यवाद वास्तव में आपने मेरा समय बचाया :) मैंने इस tap.cancelsTouchesInView = NO की तरह लिखा था; –

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