在UIScrollView内的UITextView中被截断的大文本
我有一个严重的问题,我似乎无法修复,这让我疯狂的过去两天。 我已经search了很多,我找不到解决办法,尽pipe我已经尝试了很多。
我在UIScrollView
里面有一个UITextView
。 我能够dynamic调整滚动视图内的UITextView来显示文本。 但是当UITextView
包含非常大的文本时,当我滚动几乎到最后时,它被切断。 但是, UIScrollView
的框架尺寸仍然正确。
我阅读这些post: 这个和许多类似的。
UIScrollview
和UITextview
都是使用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 = NO
resize,因为@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中,我通过简单地设置我的UITextView
的textContainerInset
来解决这个问题:
textView.textContainerInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 50.0, right: 0.0)