5

में UITextView में NSAttributedString को लगातार कैसे आकर्षित करें मुझे NSIttributedStrings का उपयोग करके UITableViewCell में UITextViews से लगातार परिणाम प्राप्त करने में समस्या हो रही है।UITableViewCell

अंदर - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 

    headerText = [[UITextView alloc]initWithFrame:CGRectZero]; 
    [headerText setUserInteractionEnabled:NO]; 
    headerText.tag = HEADER_TEXT; 
    [cell.contentView addSubview:headerText]; 
} else { 
    headerText = (UITextView*)[cell.contentView viewWithTag:HEADER_TEXT]; 
} 

//...setting up attributed strings 


[headerText setAttributedText:headerString]; 

CGSize headerSize = [headerText sizeThatFits:CGSizeMake(246, CGFLOAT_MAX)]; 

headerText.frame = CGRectMake(45, 8, headerSize.width, headerSize.height); 

परिणाम:

Before Scrolling No contentinset

आप कर सकते हैं के रूप में देखें, पहले दो पाठ को इस तरह से आकर्षित करने के लिए प्रकट होते हैं कि मैं उम्मीद/चाहूंगा। पिछले दो में UITextView आकारThatFits विधि एक बड़ा आकार देता है, फिर पाठ को आकर्षित करने के लिए आवश्यक होता है और पाठ फ्रेम में केंद्रित हो जाता है बल्कि फ्रेम के शीर्ष पर तंग होता है। यह एक मुद्दा है क्योंकि मैं uitextview फ्रेम ऊंचाई के आधार पर अन्य विचारों को लेआउट करने में सक्षम होना चाहता हूं।

फ्रेम से बाहर है और पीठ में स्क्रॉल करने के बाद: enter image description here

अब यह और भी अजनबी, जब कोशिकाओं पुन: उपयोग कर रहे हैं हो जाता है, और जिम्मेदार ठहराया स्ट्रिंग फिर से स्थापित किया जाएगा। uitextview पाठ को असंगत तरीके से खींचता है।

भी

headerText.contentInset = UIEdgeInsetsMake(-8, -8, -8, -8); 

को contentInsets स्थापना संगत परिणाम किसी भी प्रकार प्रदान नहीं करता: वहाँ अन्य enter image description here

हैं:

enter image description here

और contentinset सेट के साथ स्क्रॉल करने के बाद UITextView पर विशेषताएँ जो मुझे व्यवहार वें प्राप्त करने की अनुमति देगी मुझे जरूरत है?

self.tv.text = nil; 
self.tv.font = nil; 
self.tv.textColor = nil; 
self.tv.textAlignment = NSTextAlignmentLeft; 
self.tv.attributedText = s2; 

अन्यथा, आप के रूप में:

उत्तर

8

जब एक UITextView है कि पहले एक अलग जिम्मेदार ठहराया स्ट्रिंग था जिम्मेदार ठहराया स्ट्रिंग की स्थापना, आप हमेशा UITextView की स्ट्रिंग से संबंधित गुण पहले शून्य करने के लिए, जैसे के सभी सेट करना होगा पता चला, पिछली विशेषता वाली स्ट्रिंग की पुरानी विशेषताएं अभी भी चारों ओर लटका है और नई जिम्मेदार स्ट्रिंग को प्रभावित करती है।

सामान्य रूप से, मुझे कहना है कि मुझे नहीं लगता कि आप UITextView का उपयोग क्यों कर रहे हैं। यदि आपको उपयोगकर्ता को इन जिम्मेदार तारों को संपादित करने में सक्षम होने की आवश्यकता नहीं है, तो UILabel का उपयोग करें या अन्यथा केवल सटीक संभावित प्रतिपादन के लिए जिम्मेदार स्ट्रिंग को सीधे खींचें। NSAttributedString आपको आकार को मापने और उस आकार के भीतर आकर्षित करने के लिए आवश्यक सभी शक्ति देता है।

+0

मैं UITextView का उपयोग कर रहा हूं क्योंकि यह UITextInput प्रोटोकॉल लागू करता है। जो मुझे टेक्स्ट के कुछ सबस्ट्रिंग्स पर बटन बनाने की अनुमति देता है। मैं मानता हूं कि पाठ को सीधे चित्रित करना अनुकूल होगा। आईओएस पुस्तकालयों को मैं इसे प्राप्त करने के लिए क्या करना चाहिए? प्रश्न का उत्तर देने के लिए फिर से धन्यवाद। –

+0

पाठ खींचने के लिए कोई "पुस्तकालय" की आवश्यकता नहीं है। यह UIKit का हिस्सा है। – matt

+0

मुझे लगता है कि मुझे यह निर्धारित करने में सक्षम होने के लिए कोरटेक्स्ट का उपयोग करने की आवश्यकता हो सकती है कि किसी दिए गए रेखा या पाठ के शीर्ष पर कोई स्पर्श आया हो। –