2011-08-04 10 views
5

में UITextView है, मैंने अपने सेल में UITextView जोड़ा है। यदि उपयोगकर्ता पर UITextView पर उपयोगकर्ता क्लिक करता है तो didSelectRowAtIndexPath: तब तक नहीं कहा जाता है जब तक कि वे उस क्षेत्र पर क्लिक न करें जहां UITextView कवर नहीं हो रहा है। क्या कोई काम है या मैंने क्या गलत किया है?यूआईटीबल सेल चयन योग्य नहीं है जहां सेल

UITextView *txtview = [[UITextView alloc] initWithFrame:CGRectMake(75, 1, 250, 34)];//init and create the UIWebView 
txtview.autoresizesSubviews = NO; 
//txtview.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth); 
[txtview setBackgroundColor:[UIColor grayColor]]; 
[txtview setFont:[UIFont fontWithName:@"Helvetica" size:15]]; 
txtview.textColor = [UIColor blackColor]; 
txtview.scrollEnabled = NO; 

[txtview setOpaque:NO]; 
//[txtview setDelegate:self]; 
txtview.editable = NO; 
txtview.text = aBlogRss.title; 
[txtview setContentInset:UIEdgeInsetsMake(-11,-8,0,0)]; 
//[txtview loadHTMLString:htmlString baseURL:nil]; 
[cell addSubview:txtview]; 
[txtview release]; 

कई धन्यवाद, -Code

उत्तर

14

मुझे लगता है कि समाधान वास्तव में

txtView.userInteractionEnabled = NO; 

है यह जनक दृश्य में अंतिम रूप से पारित होगा .. या इस मामले UITableViewCell में। यदि आप इसे कई स्थानों पर कर रहे हैं तो UITAbleViewCell उपclass करना एक अच्छा विचार होगा।

फिर, आप अपने वर्ग एक UITextViewDelegate कर सकता है, स्वयं के लिए अपने txtView.delegate निर्धारित करते हैं, और

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView,

को लागू करने और उसके बाद self.tableview के माध्यम से उचित UITableViewCell चयन .. लेकिन उस कम नहीं होगा एक हैक का

0

आप बनाना चाहिए अपने viewDidLoad: अपने cellForRowAtIndexPath: में में UITextView और केवल रखने [cell addSubview:txtview];

वैकल्पिक रूप से, आप का उपयोग कर सकते हैं: [cell setAccessoryView: txtView];

एक और बात, कैसे आप अपने सेल बना रहे हैं?

-2

txtView.userInteractionEnabled = YES; 

कि यह करना चाहिए की कोशिश करो।

0

क्या सेल एक बार या संभावित रूप से असीमित बार उपयोग किया जाता है? यदि एक बार, तो आप

- (void)selectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition 

और मैन्युअल रूप से इंडेक्सपाथ डालें क्योंकि आप जानते हैं कि यह कहां स्थित है।

यदि सेल का पुन: उपयोग किया जाना है, तो पंक्ति के साथ टेक्स्टफील्ड की "टैग" संपत्ति सेट करने का प्रयास करें, फिर जब UITextView द्वारा स्पर्श पता चला है, तो ऊपर दिए गए UITableView विधि को कॉल करने के लिए अपने प्रतिनिधि तरीकों में से एक का उपयोग करें , UITextView के टैग से व्युत्पन्न एक NSIndexPath प्रदान करना।

-1

हां, यह समझ में आता है कि पंक्ति का चयन नहीं किया गया है क्योंकि textView है। इसके बारे में जाने के कुछ तरीके यहां दिए गए हैं।

  1. आप textView फ्रेम बना सकते हैं जैसे कि आप पंक्ति का चयन करने के लिए कमरा प्रदान करते हैं।

  2. आप प्रत्येक टेक्स्ट व्यू (प्रत्येक पंक्ति के लिए) को एक संपत्ति के रूप में सेट कर सकते हैं और पता लगा सकते हैं कि textView का चयन किया गया था। उस पर आधारित आप textViewDidBeginEditing विधि को कॉल कर सकते हैं और प्रोग्रामेटिक रूप से उस पंक्ति को चुनने योग्य बना सकते हैं।

    [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; 
    

    संदर्भ: How do I select a UITableViewCell by default?

    Select tableview row programmatically


नोट: आप करना होगा तार्किक यह cellIndexPath इसी के साथ प्रत्येक textView लिंक।

+0

डाउनवोट क्यों? :( – Legolas

0
  1. कोशिकाओं में एक UITapGestureRecognizer जोड़ें।

  2. नीचे जैसा एक इशारा हैंडलिंग कोड लिखें।

    - (IBAction)handleTap:(UITapGestureRecognizer *)sender 
    { 
        [self.tableView selectRowAtIndexPath: 
        [self.tableView indexPathForCell:(UITableViewCell *)sender.view] 
               animated:NO 
              scrollPosition:UITableViewScrollPositionNone]; 
    } 
    
  3. उन्हें कनेक्ट करें।

आप दोनों चयन योग्य UITextView और चयन योग्य UITextViewCell प्राप्त करेंगे।

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