我有一个不可滚动的UITextView,它的layoutManager maximumNumberOfLines设置为9,这很好用,但是我无法在NSLayoutManager中找到一种方法来限制文本不超出UITextView的框架。
例如,在此屏幕截图中,光标位于第9行(第1行被剪切在屏幕截图的顶部,所以请忽略它)。如果用户继续键入新字符、空格或按下回车键,光标会继续超出屏幕,UITextView的字符串也会变得越来越长。
我不想限制UITextView的字符数量,因为外语字符的大小不同。
我已经试图解决这个问题几周了,非常感谢任何帮助。
CustomTextView.h
#import <UIKit/UIKit.h>
@interface CustomTextView : UITextView <NSLayoutManagerDelegate>
@end
CustomTextView.m
#import "CustomTextView.h"
@implementation CustomTextView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
self.backgroundColor = [UIColor clearColor];
self.font = [UIFont systemFontOfSize:21.0];
self.dataDetectorTypes = UIDataDetectorTypeAll;
self.layoutManager.delegate = self;
self.tintColor = [UIColor companyBlue];
[self setLinkTextAttributes:@{NSForegroundColorAttributeName:[UIColor companyBlue]}];
self.scrollEnabled = NO;
self.textContainerInset = UIEdgeInsetsMake(8.5, 0, 0, 0);
self.textContainer.maximumNumberOfLines = 9;
}
return self;
}
- (CGFloat)layoutManager:(NSLayoutManager *)layoutManager lineSpacingAfterGlyphAtIndex:(NSUInteger)glyphIndex withProposedLineFragmentRect:(CGRect)rect
{
return 4.9;
}
@end
更新:问题仍未解决