如何在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

尝试这个:

  1. 将textview的委托设置为您的视图控制器
  2. 添加这个方法

     - (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设置了正确的参数(并且没有必要通过重写手势来实际完成它)。 我猜如果你改变你的属性在界面生成器中的“行为”和“检测”如下,你会有你想要的行为。 在这里输入图像说明

Interesting Posts