objective-c – iOS 7中的换行符UITextView打破Text Kit禁用区域换行

objective-c – iOS 7中的换行符UITextView打破Text Kit禁用区域换行,第1张

概述我在iOS 7中使用Text Kit,我发现NSTextContainer排除区域有很多奇怪之处. 我有两个视图:一个UITextView和一个简单的可拖动的UIView;当UIView移动时,我从UIView的框架创建了一条bezier路径(调整到UITextView的坐标空间内),我更新了UITextView的NSTextContainer的exclusionPaths数组 – 非常简单. 在 我在iOS 7中使用Text Kit,我发现NSTextContainer排除区域有很多奇怪之处.

我有两个视图:一个UITextVIEw和一个简单的可拖动的UIVIEw;当UIVIEw移动时,我从UIVIEw的框架创建了一条bezIEr路径(调整到UITextVIEw的坐标空间内),我更新了UITextVIEw的NSTextContainer的exclusionPaths数组 – 非常简单.

在第一个屏幕截图中,您可以看到Text Kit很好地将文本包装在矩形排除区域周围:

但是,当用户在UITextVIEw中引入换行符时,TextKit似乎认为禁区的垂直区域要大得多 – 看起来与换行符创建的空格一样高. bezIEr路径完全相同,所以这似乎是一个Text Kit问题(除非我做错了).

码:

VIEwController.h:

@interface VIEwController : UIVIEwController<UITextVIEwDelegate>@property (nonatomic,strong) IBOutlet UITextVIEw *textVIEw;@property (nonatomic,strong) IBOutlet UIVIEw *dragVIEw;@end

VIEwController.m:

-(voID)vIEwDIDLoad{    [super vIEwDIDLoad];    UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)];    [panRecognizer setMinimumNumberOftouches:1];    [panRecognizer setMaximumNumberOftouches:1];    [self.dragVIEw addGestureRecognizer:panRecognizer];    [self updateExclusionZone];}-(voID)move:(UIPanGestureRecognizer *)pan{    [self.vIEw bringSubvIEwToFront:[pan vIEw]];    if ([pan state] == UIGestureRecognizerStateBegan) {        NSLog(@"pan began");    }    self.dragVIEw.center = [pan locationInVIEw:self.vIEw];    [self updateExclusionZone];    if ([pan state] == UIGestureRecognizerStateEnded) {        NSLog(@"pan ended");    }}-(voID)updateExclusionZone{    CGRect dragVIEwFrame = self.dragVIEw.frame;    CGRect exclusionRect = [self.vIEw convertRect:dragVIEwFrame toVIEw:self.textVIEw];    UIBezIErPath *exclusion = [UIBezIErPath bezIErPathWithRect:exclusionRect];    self.textVIEw.textContainer.exclusionPaths = @[exclusion];}

有什么想法吗?

解决方法 我今天遇到了同样的问题.

如果您同时设置可编辑和可选择,则似乎会出现此错误.如果仅选择一个或否,则按预期呈现.两者都是默认选中的.

如果您需要两个选项,只需在代码中设置它们.

_textVIEw.textContainer.exclusionPaths = exclusionPaths;_textVIEw.attributedText = attrString;_textVIEw.editable = YES;_textVIEw.selectable = YES;
总结

以上是内存溢出为你收集整理的objective-c – iOS 7中的换行符UITextView打破Text Kit禁用区域换行全部内容,希望文章能够帮你解决objective-c – iOS 7中的换行符UITextView打破Text Kit禁用区域换行所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1085930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存