如何在UITextView中禁用放大
我想摆脱UITextView中的放大和文本select,但我需要电话号码,链接和地址检测器。 我在用
-(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer { if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]]) { gestureRecognizer.enabled = NO; } [super addGestureRecognizer:gestureRecognizer]; return;}
停止放大,但它也停止select电话号码/地址/链接检测到的文字。 如果我这样做[_txtView setSelectable:NO];
它会停止放大和文本select以及数据检测。
将图像放在.xib文件的UITextview中,然后放到下面的代码中。
- (void)viewDidLoad { [super viewDidLoad]; self.navigationController.navigationBarHidden = YES; UITapGestureRecognizer *tappress= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(longPressed:)]; img.userInteractionEnabled = YES; [img addGestureRecognizer:tappress]; } -(void)longPressed:(UILongPressGestureRecognizer *)sender { [yourtextview becomeFirstResponder]; }
在我的代码中,img是一个UIImageView
尝试这个:
- 将textview的委托设置为您的视图控制器
-
添加这个方法
- (void)textViewDidChangeSelection:(UITextView *)textView { NSRange selected; selected.location = 0; selected.length = 0; textView.selectedRange = selected; }
这将禁用放大,但仍然可以点击链接
经过相当长的时间的努力,我设法停止文本select,放大,并保持数据检测(链接点击等),通过覆盖的UITextView子类addGestureRecognizer只允许UILongPressGestureRecognizer延迟触摸结束:
UIUnselectableTextView.m
-(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer { if([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]] && gestureRecognizer.delaysTouchesEnded) { [super addGestureRecognizer:gestureRecognizer]; } }
你只需要确保你已经为UItextfield设置了正确的参数(并且没有必要通过重写手势来实际完成它)。 我猜如果你改变你的属性在界面生成器中的“行为”和“检测”如下,你会有你想要的行为。