在UITeViewView中的UITextView中设置多个链接

时间:2016-09-07 18:13:16

标签: ios uitableview xamarin.ios uitextview

我有一个tableview,它将在同一个单元格中显示多个地址以及其他一些信息。经过大量的修补和谷歌搜索后,我得出结论:UITextView是检测链接的最佳/最简单方法。

我目前使用UITextView的方法是不检测链接,我不确定原因。

这是:

    public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
    {
        UITableViewCell cell = tableView.DequeueReusableCell(Identifier);
        if (cell == null)
            cell = new UITableViewCell(UITableViewCellStyle.Value1, Identifier);

        cell.TextLabel.Lines = 0; // allow wrapping
        cell.TextLabel.Text = items[indexPath.Row];
        UITextView tv = new UITextView(new CoreGraphics.CGRect(cell.Bounds.X, cell.Bounds.Y, cell.ContentView.Frame.Size.Width, cell.ContentView.Frame.Size.Height));
        tv.Text = cell.TextLabel.Text;
        cell.TextLabel.Text = "";
        tv.DataDetectorTypes = UIDataDetectorType.Address;
        tv.Selectable = true;
        tv.UserInteractionEnabled = true;
        tv.ScrollEnabled = false;

        cell.ContentView.AddSubview(tv);
        return cell;
    }

这既不会检测嵌入的地址,也不允许单击它。

现在已经工作太久了,在Android上花了大约3分钟!为什么这么难?

2 个答案:

答案 0 :(得分:1)

替换下面的行

  tv.DataDetectorTypes = UIDataDetectorType.Address;

 tv.DataDetectorTypes = UIDataDetectorType.Link;

要检测UITextView中的链接,您的UITextView应该是可选的。所以请确保您的textview是可选择的,而不是像

那样可编辑
  tv.editable = false;

答案 1 :(得分:1)

发现问题,您需要设置

tv.editable = false;

我认为它被自动设置为false,但事实并非如此。