sud*_*udo 57 iphone uiscrollview uitextview ios
我有一个严重的问题,我似乎无法修复,这让我在过去两天疯狂.我已经搜索了很多,我找不到解决方案,即使我尝试了很多.
我有一个UITextView内部UIScrollView.我能够动态调整UITextViewscrollview内部的大小来显示文本.但是当UITextView包含非常大的文本时,当我几乎滚动到最后时它会被切断.但是,UIScrollView框架的尺寸仍然正确.
在UIScrollview和UITextview均在厦门国际银行使用自动版式创建.
这是我当前的代码和截图,因为您可以看到屏幕截图中的空白点应填充文本.请帮忙.

- (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];
}
Run Code Online (Sandbox Code Playgroud)
Mik*_*ike 131
此问题自iOS 7以来就已存在,并且仍然存在于iOS 12中.
但是,scrollEnabled = NO正如@igz推荐的那样,我无法通过在调整大小之前进行设置来保持正常的滚动行为.相反,我调整了滚动on和off调整大小后
// Resize text view here
textView.scrollEnabled = NO;
textView.scrollEnabled = YES;
Run Code Online (Sandbox Code Playgroud)
这迫使剪切文本正确呈现.
sud*_*udo 15
谢谢大家的帮助.这最终是在iOS7中为我工作的结果.
我不得不为这个特殊的xib 禁用自动布局.
然后做了以下事情:
[textView setScrollEnabled:YES];
[textView setText:text];
[textView sizeToFit];
[textView setScrollEnabled:NO];
Run Code Online (Sandbox Code Playgroud)
med*_*eda 11
对我来说,解决方案是sizeToFit在自定义textView之后
[self.yourTextView sizeToFit];
Run Code Online (Sandbox Code Playgroud)
这应该是您在操作textview时所做的最后一件事,不应该在填充内容文本之前.
绝对是iOS7.我有同样的问题适用于所有调整大小的UITextViews,生成xib和代码.我发现在更改UITextView框架后需要调整textContainer.size.
我创建了这个类别代码来调整textContainer.size,但是在设置文本值之后似乎也需要调整,所以如果没有设置框架大小,我必须在任何文本更改后调用adjustAfterFrameChange.这段代码假设UITextView没有对setFrame执行任何操作:本身取出setFrame:并且如果你想避免这种风险,请手动调用adjustAfterFrameChange
编辑:已更改
self.textContainer.size = self.frame.size; // fix for cut off text
Run Code Online (Sandbox Code Playgroud)
至
self.textContainer.size = self.contentSize; // fix for cut off text
Run Code Online (Sandbox Code Playgroud)
@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
Run Code Online (Sandbox Code Playgroud)
试试这个
[self.textView setContentInset:UIEdgeInsetsMake(-8.0, 0, -8.0, 0)];
Run Code Online (Sandbox Code Playgroud)
它适用于UITextView中的剪切文本显示.
可以通过将连续的布局属性设置为false来解决此问题。
textView.layoutManager.allowsNonContiguousLayout = false
Run Code Online (Sandbox Code Playgroud)
尽管文档说默认值是false,但实际上对于UITextView它将其设置为true。
| 归档时间: |
|
| 查看次数: |
26825 次 |
| 最近记录: |