2013-12-09 9 views
6

मैं अपने UITableView में UITableViewCell उपclassing कर रहा हूँ। मैं बार हजार एक के बारे में पहले यह किया है, लेकिन अब मैं इस प्रतिनिधि घटना को पकड़ने के लिए कोशिश कर रहा हूँ:UITableViewCell didselectrow ईवेंट देरी

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath; 

जब सेल इस कॉलबैक छुआ है लागू किया जाना चाहिए। लेकिन मैंने केवल तभी आह्वान किया जब मैं छूने के बाद 6 सेकंड या 6 बार दबा रहा हूं, लेकिन हर स्पर्श नहीं।

tableview एक subclassed UIView की एक subview है और मैं awakeFromNib में इस फोन:

-(void)awakeFromNib{ 
_table_view.delegate = self; 
_table_view.dataSource = self; 
} 

tableview ही ड्रॉ ठीक है, लेकिन इस घटना में अच्छी तरह से काम नहीं कर रहा। कोई विचार?

-(void) tableView:(UITableView*) tableView didHighlightRowAtIndexPath:(NSIndexPath*) indexPath 

didSelect केवल आह्वान यदि आप वास्तव में एक सेल, बस टैप नहीं चयनित:

यहाँ UITableViewCell उपवर्ग कोड मीटर

#import "FLBlockedPersonCell.h" 

@implementation FLBlockedPersonCell 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 
     // Initialization code 
    } 
    return self; 
} 

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
{ 
    [super setSelected:selected animated:animated]; 

    // Configure the view for the selected state 
} 


- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated{ 
    [super setHighlighted:highlighted animated:animated]; 
} 



@end 

उत्तर

2

जब सेल को छुआ है इस आह्वान होना चाहिए है यह। इसके अलावा कई विधियों जैसे हाइलाइट और इच्छा चयन स्पर्श पर आक्रमण करेंगे।

+0

ऐसा तब होता है जब सेल को 1 सेकंड के प्रेस के बाद हाइलाइट किया जाता है, जब मुझे सेल –

+1

स्पर्श करता है तो shoudlHighlight के बारे में क्या होता है? –

1

सबसे पहले, सुनिश्चित करें कि tableView.allowsSelectionYES पर सेट है।

मुझे लगता है कि UIView जो UITableView स्पर्श घटनाओं को अवरुद्ध कर रहा है का एक सबव्यूव है।

आपको यह सुनिश्चित करने की ज़रूरत है कि UIView सबक्लास किसी भी स्पर्श ईवेंट को कैप्चर नहीं कर रहा है। मैं अपने UIView उपवर्ग से इन तरीकों में से किसी भी हटा:

touchesBegan:withEvent: 
touchesMoved:withEvent: 
touchesEnded:withEvent: 
touchesCancelled:withEvent: 

आप इस विधि का मैं भी नहीं वापस होगा लागू करते हैं तो:

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 
{ 
    return NO; 
} 

आप वास्तव में इन तरीकों अधिभावी होने की जरूरत नहीं करना चाहिए या तो:

hitTest:withEvent: 
pointInside:withEvent: 

यदि आप हैं, तो सवाल क्यों करें, और उन्हें हटा दें।

+0

मैंने आपके द्वारा यहां वर्णित सब कुछ किया है लेकिन यह अभी भी वही है –

+0

@or azran प्रश्न में UITableViewCell subclass के लिए कोड रखें। –

+0

कोड यहां –

7

हो सकता है कि आप अपने दृश्य पर UITapGestureRecognizer जोड़ते हैं, जब आपने इसे स्पर्श किया, तो UITapGestureRecognizer पहली प्रतिक्रिया।

+0

अगर मैं इसे समझना चाहता हूं तो यह प्रलोभन होगा। –

+0

यदि आपके पास दृश्य पर UITapGestureRecognizer है, तो इसे हल करने के लिए पहचानकर्ता.cancelsTouchesInView = false सेट करें। – Harris