जिस तरह से मैं यह करता हूं वह प्रत्येक पैराग्राफ के सभी आकारों की गणना करना है। SizeWithFont के साथ: बाध्य करने के लिए: लाइनब्रैक मोड:
तब आप [textView सामग्री ऑफ़सेट] से कौन सा पैराग्राफ दिखाई दे सकते हैं, यह काम करने में सक्षम होंगे।
स्क्रॉल करने के लिए, scrollRangeToVisible का उपयोग न करें, केवल setContentOffset का उपयोग करें: इसके लिए CGPoint y पैरामीटर या तो अगले पैराग्राफ में सभी ऊंचाई आकारों का योग होना चाहिए, या केवल textView.frame.size.height जोड़ें, अगर वह अगले अनुच्छेद की शुरुआत से करीब है।
यह समझ में आता है?
जवाब में टिप्पणी करने के लिए requst कोड bellow (untested):
CGFloat paragraphOffset[MAX_PARAGRAPHS];
CGSize constraint = CGSizeMake(widthOfTextView, 999999 /*arbitrarily large number*/);
NSInteger paragraphNo = 0;
CGFloat offset = 0;
for (NSString* paragraph in paragraphs) {
paragraphOffset[paragraphNo++] = offset;
CGSize paragraphSize = [paragraph sizeWithFont:textView.font constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
offset += paragraphSize.height;
}
// find visible paragraph
NSInteger visibleParagraph = 0;
while (paragraphOffset[visibleParagraph++] < textView.contentOffset.y);
// scroll to paragraph 6
[textView setContentOffset:CGPointMake(0, paragraphOffset[6]) animated:YES];
स्रोत
2011-05-24 08:20:17
क्या आप कुछ उदाहरण कोड दे सकते हैं? मुझे यकीन नहीं है कि आकार किस प्रकार से है: बाध्यकारी: लाइनब्रैक मोड: काम करता है, बाध्य करने के लिए क्या है: आकार? –
ऊपर जोड़ा गया कोड। एफवाईआई पैराग्राफ पैराग्राफ स्ट्रिंग्स का एक एनएसएआरएआर है –
ध्यान दें कि आप 99 99 999 को FLT_MAX (एक बड़े मूल्य के लिए डिफ़ॉल्ट आईफ़ोन वैरिएबल) – Niko