点击链接冻结应用程序

时间:2018-06-11 06:12:55

标签: ios xamarin xamarin.ios html-parsing tttattributedlabel

我正在使用Xamarin.TTTAttributedLabel来解析xamarin.ios应用中的HTML。 大多数时候,每当我点击链接时,它就会冻结应用程序。有时它会起作用,有时则不起作用。 我在 UIView - > ScrollView 中使用标签。我的滚动视图没有任何敲击手势。 这不会发生在模拟器上。仅限物理设备。

View.AddSubview (scrollView)
TTTAttributedLabel lbl = new TTTAttributedLabel();
lbl.SetText(attributedString, 15f);
lbl.Lines = 0;
lbl.EnabledTextCheckingTypes = NSTextCheckingType.Link | NSTextCheckingType.PhoneNumber;
lbl.UserInteractionEnabled = true;
lbl.Delegate = new TTTHTMLLabelDelegate(this);
lbl.Frame = new CGRect (15, 0, Common.screenWidth - 30, 20);
lbl.SizeToFit();
view2.AddSubview(lbl);
scrollView.AddSubview(view2);



//Delegate code
public override void DidSelectLinkWithURL(TTTAttributedLabel label, NSUrl url)
        {
            if (url != null)
            {
                var PageUrl = url.ToString();
                if (!string.IsNullOrWhiteSpace(PageUrl))
                {
                    if (PageUrl.StartsWith("mailto"))
                    {
                        //code to open email app
                    }
                    else if (PageUrl.StartsWith("tel"))
                    {
                       //code to open phone app

                    }
                    else
                    {
                        //for <a> links
                        UIApplication.SharedApplication.OpenUrl(url)
                    }
                }
            }

        }

更新示例代码。 我发现了另外一件事,{app}冻结时DidSelectLinkWithURL没有被调用。

1 个答案:

答案 0 :(得分:1)

尝试存储您的变量

public class YourClass
{
TTTAttributedLabel lbl;

 ViewDidLoad()
 {
       View.AddSubview (scrollView)
       lbl = new TTTAttributedLabel();
       lbl.SetText(attributedString, 15f);
       lbl.Lines = 0;
       lbl.EnabledTextCheckingTypes = NSTextCheckingType.Link | 
       NSTextCheckingType.PhoneNumber;
       lbl.UserInteractionEnabled = true;
       lbl.Delegate = new TTTHTMLLabelDelegate(this);
       lbl.Frame = new CGRect (15, 0, Common.screenWidth - 30, 20);
       lbl.SizeToFit();
       view2.AddSubview(lbl);
       scrollView.AddSubview(view2);
 }
}