我有两个视图:一个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禁用区域换行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)