3

我想摆脱 UITextView 中的放大和文本选择,但我需要电话号码、链接和地址检测器。我在用

-(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer {
    if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]]) {
        gestureRecognizer.enabled = NO;
    }
    [super addGestureRecognizer:gestureRecognizer];
    return;}

停止放大,但它也停止选择 textview 检测到的电话号码/地址/链接。如果我这样做[_txtView setSelectable:NO];,它会停止放大和文本选择以及数据检测。

4

4 回答 4

2

经过很长时间的尝试,我设法通过覆盖 UITextView 子类上的 addGestureRecognizer 来停止文本选择、放大和保持数据检测(链接可点击等),只允许 UILongPressGestureRecognizer 延迟触摸结束:

UIUnselectableTextView.m

-(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
{
    if([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]] && gestureRecognizer.delaysTouchesEnded)
    {
        [super addGestureRecognizer:gestureRecognizer];
    }
}
于 2015-03-09T10:48:04.913 回答
1

将图像放在 .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

于 2014-07-18T13:11:52.827 回答
0

尝试这个:

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

    - (void)textViewDidChangeSelection:(UITextView *)textView
    {
         NSRange selected;
         selected.location = 0;
         selected.length = 0;
         textView.selectedRange = selected;
    }
    

这将禁用放大,但仍然有可点击的链接

于 2014-07-18T15:39:22.243 回答
-3

您只需要确保您为 UItextfield 设置了正确的参数(实际上不需要通过覆盖手势来完成)。我想如果您在界面构建器中更改“行为”和“检测”的属性,如下所示,您将获得所需的行为。在此处输入图像描述

于 2014-07-18T10:54:39.690 回答