Новые строки в iOS 7 UITextView ломают перенос запретной зоны Text Kit
работаю с Text Kit в iOS 7, и яя нахожу много странностей вокругNSTextContainer
зоны отчуждения. I '
у нас есть два взгляда:UITextView
и простой перетаскиваемыйUIView
; какUIView
движется, я создаю безье путь изUIView
кадр (скорректирован с точностью доUITextView
S координатное пространство), и я обновляюUITextView
NSTextContainer
exclusionPaths
массив - довольно просто.
На первом скриншоте вы видите, что Text Kit прекрасно оборачивает текст вокруг прямоугольной зоны исключения:
Тем не менее, когда пользователь вводит новые строки вUITextView
Похоже, что TextKit считает, что зона запрета намного больше по вертикали - по сравнению с тем, что кажется таким же высоким, как пробел, созданный новой строкой. Путь Безье точно такой же, так что, похоже, это проблема текстового набора (если я нея что-то делаю не так).
Код:
ViewController.h:
@interface ViewController : UIViewController
@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];
}
Какие-нибудь мысли?