iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 使用textContainer无法选择UITextView大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用带有textContainer属性的UITextView和属性字符串…

但是这种观点变得无法选择.

我尝试subClass UITextView并返回YES到canBecomeFirstResponder方法,但它仍然是unSELEctable ..

如何解决这个问题?

这是我的代码的一部分

NSString * decodedHtmlString = [[contentString StringByDecodingHTMLEntities] StringWithNewLinesAsBRs];

NSString * plaintext = [decodedHtmlString StringByConverTingHTMLToPlaintext];

NSData * dataString = [decodedHtmlString dataUsingEncoding:NSUnicodeStringEncoding allowLossyConversion:NO];

NSDictionary * attributedoptions = [NSDictionary DictionaryWithObjectsAndKeys:
                                    NSHTMLTextDocumentType,NSDocumentTypeDocumentAttribute,nil];



NSAttributedString * attributesString = [[NSAttributedString alloc] initWithData:dataString
                                                                         options:attributedoptions
                                                              documentAttributes:nil
                                                                           error:nil];


/////direction
NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.alignment = NSTextAlignmentright;


NSMutableAttributedString * mutableAttrString = [[NSMutableAttributedString alloc] initWithAttributedString:attributesString];
[mutableAttrString addAttribute:NSFontAttributENAME value:[UIFont fontWithName:@"Arial" size:29.0] range:NsmakeRange(0,plaintext.length)];
[mutableAttrString addAttribute:NSParagraphStyleAttributENAME value:paragraphStyle range:NsmakeRange(0,plaintext.length)];



NSTextStorage * textStorage = [[NSTextStorage alloc] initWithAttributedString:mutableAttrString];
NSLayoutManager * layoutManager = [[NSLayoutManager alloc] init];
[textStorage addLayoutManager:layoutManager];


NSUInteger lastRenderedGlyph = 0;
CGFloat currentXOffset = 0;
while (lastRenderedGlyph < layoutManager.numberOfGlyphs) {

    CGRect textViewFrame = CGRectMake(currentXOffset,500,700);
    CGSize columnSize = textViewFrame.size;

    NSTextContainer *textContainer = [[NSTextContainer alloc] initWithSize:columnSize];
    [layoutManager addTextContainer:textContainer];

    UITextView *textView = [[UITextView alloc] initWithFrame:textViewFrame
                                               textContainer:textContainer];
    [textView setSELEctable:YES];
    textView.scrollEnabled = NO;

    currentXOffset += CGRectGetWidth(textViewFramE);

    [self.scrollView addSubView:textView];
    lastRenderedGlyph = Nsmaxrange([layoutManager glyphRangeForTextContainer:textContainer]);
}

解决方法

似乎使用textContainer无法选择UITextView.因此,作为解决方法,我们可以从textContainer的范围中检索attributedString,然后将其设置为UITextView的attributedText属性.

NSAttributedString * subAttributedString = [mutableAttrString attributedSubStringFromRange:[layoutManager glyphRangeForTextContainer:textContainer]];
    [textView setAttributedText: subAttributedString];

然后选择工作.

大佬总结

以上是大佬教程为你收集整理的ios – 使用textContainer无法选择UITextView全部内容,希望文章能够帮你解决ios – 使用textContainer无法选择UITextView所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。