在UIScrollView内的UITextView中被截断的大文本

我有一个严重的问题,我似乎无法修复,这让我疯狂的过去两天。 我已经search了很多,我找不到解决办法,尽pipe我已经尝试了很多。

我在UIScrollView里面有一个UITextView 。 我能够dynamic调整滚动视图内的UITextView来显示文本。 但是当UITextView包含非常大的文本时,当我滚动几乎到最后时,它被切断。 但是, UIScrollView的框架尺寸仍然正确。

我阅读这些post: 这个和许多类似的。

UIScrollviewUITextview都是使用AutoLayout在UITextview中创build的。

这是我目前的代码和截图,你可以看到截图中的空白处应该填充文本。 请帮忙。

在这里输入图像说明

 - (void)viewDidAppear:(BOOL)animated { CGRect frame = self.longDescField.frame; frame.size.height = self.longDescField.contentSize.height; self.longDescField.frame = frame; self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.longDescField.contentSize.height + 200); self.scrollView.scrollEnabled = YES; [self.scrollView flashScrollIndicators]; } 

这个问题从iOS 7开始就已经存在,并且仍然存在于iOS 10.3中。

但是,我没有能够保持正常的滚动行为通过设置scrollEnabled = NOresize,因为@igzbuild议。 相反,在resize之后,我切换滚动

 // Resize text view here textView.scrollEnabled = NO; textView.scrollEnabled = YES; 

这迫使中断文本正确呈现。

感谢大家的帮助。 这最终是在iOS7中为我工作的结果。

我不得不为这个特定的xib 禁用自动布局

然后做了以下几点:

 [textView setScrollEnabled:YES]; [textView setText:text]; [textView sizeToFit]; [textView setScrollEnabled:NO]; 

对于我来说,解决scheme是在定制sizeToFit之后放入sizeToFit

 [self.yourTextView sizeToFit]; 

这应该是你操作textview时所做的最后一件事,不应该在填充内容文本之前。

绝对是iOS7。 我有这个相同的问题适用于所有UITextViews被resize,xib和代码生成。 我发现在UITextView帧更改后需要调整textContainer.size。

我创build了这个类别的代码来调整textContainer.size,但它也似乎需要调整后,设置文本值,所以我必须调用adjustAfterFrameChange后任何文本更改,如果他们没有后面设置帧大小。 这段代码假设UITextView没有对setFrame做任何事情:所以取出setFrame:并且手动调用adjustAfterFrameChange,如果你想避免这种风险

编辑:改变

 self.textContainer.size = self.frame.size; // fix for cut off text 

 self.textContainer.size = self.contentSize; // fix for cut off text 

 @interface UITextView(Extras) - (void)adjustAfterFrameChange; @end @implementation UITextView(Extras) - (void)adjustAfterFrameChange { #if defined(__IPHONE_7_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_0 if ([self respondsToSelector:@selector(textContainer)]) self.textContainer.size = self.contentSize; // fix for cut off text #endif } - (void)setFrame:(CGRect)frame { [super setFrame:frame]; [self adjustAfterFrameChange]; } @end 

尝试这个

 [self.textView setContentInset:UIEdgeInsetsMake(-8.0, 0, -8.0, 0)]; 

它适用于UITextView中的剪切文本显示。

我有一个类似的问题,其中长文本被切断后,文本视图的大小调整。 在resize之前closuresscrollingEnabled似乎可以解决它。 当然好像是一个IOS 7的错误。

我们在推出iOS7时遇到了这样的问题。 当我们调用setText向我们的UITextView添加一行(或多行)时,textview没有使用正确的新高度进行重绘。 setNeedsDisplay,setNeedsLayout,重绘图层,重绘整个视图等等都不起作用。 最后,我们迫使损失和获得重点:

 [textView resignFirstResponder]; [textView becomeFirstResponder]; 

这迫使高度重新计算并正确重绘。 值得庆幸的是,这并不会导致键盘popup,但是值得一提的是,在您的应用所支持的任何iOS版本上都是值得的。

在Interface Builder中也是如此。

选中文本视图后,在“实用程序”检查器中取消选中显示垂直指示器。 裁剪文本现在出现。

我们遇到了同样的问题,除了UITextView的左半部分或右半部分被切断之外。 发生在iOS 7和iOS 6上,在各种手机上。 呼叫:

 myTextView.scrollEnabled = NO; 

在看来会出现问题。

我有同样的问题,一个文本视图(没有滚动视图)。 解决此问题(Xcode 7.3.1,iOS 9.3),只需在属性检查器中取消选中“滚动已启用”。

试试这个

在IOS 8和Xcode 6.3中,

 textview.scrollEnabled=YES; [self.textview setContentInset:UIEdgeInsetsMake(-10.0, 0, -5.0, 0)]; 

我可能是错的,但我不明白你的问题彻底,但是什么是使用UIScrollView,因为与UITextView类实现可滚动,多行文本区域的行为?

你应该丢弃UIScrollView。

这些答案都没有为我工作。

我正在与故事板混在一起,不知何故现在正在工作。 它在故事板上看起来仍然错误,但在设备上现在显示正常。

我做了各种各样的事情 ,包括切换textfield的许多选项。

认为对我来说固定的是把视野放大,build设,并再次把它做成合适的尺寸

我对一个模糊不清的答案表示歉意,但也许有帮助。 这个项目最初是为iOS 5编写的,从那以后,这个文本视图可能不会有太多的混乱。

我面临同样的情况。 我必须禁用UITextView的滚动,这样做会导致最后一行被粘住。 这是我的解决scheme:

 //In the UITextView subClass, override "gestureRecognizerShouldBegin" and let the scrolling of UITextView remain on. -(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && gestureRecognizer.view == self){ return NO; } return [super gestureRecognizerShouldBegin:gestureRecognizer]; } 

在Swift中,我通过简单地设置我的UITextViewtextContainerInset来解决这个问题:

 textView.textContainerInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 50.0, right: 0.0)