- Versuchen Sie, Ihre Zeichenfolge für mögliche Links zu analysieren. In meinem Fall ist die Zeichenfolge immer eine Reihe von Telefonnummern wie - "88002000600 +7999999999 8888800888" so ist es ein einfacher Fall, aber es sollte kein Problem sein, Pars für Website-Links, E-Mails von Regex.
- Make zugeschrieben String und notwendigen Attribute wie diese
zuordnen -
//something right here and get your potential links list
var attributedContacts = new NSMutableAttributedString (value as string, UIFont.SystemFontOfSize (14), UIColor.White, UIColor.Clear);
foreach (var item in numbers) {
var nsStringItem = new NSString (item);
var nsTelPromptLink = new NSString (string.Format ("telprompt://{0}", item));
var range = attributedContacts.MutableString.LocalizedStandardRangeOfString (nsStringItem);
attributedContacts.AddAttribute (new NSString ("TextLinkAttributeName"), nsTelPromptLink, range);
}
textView.AttributedText = attributedContacts;
- Dann sollten Sie Gestenerkenner auf Ihren Text-Ansicht und Griff tippt die folgende Art und Weise:
-
var tapRecognizer = new UITapGestureRecognizer ((UITapGestureRecognizer recognizer) => {
var textView = recognizer.View as UITextView;
if (textView == null)
return;
var tappedPoint = recognizer.LocationInView (textView);
tappedPoint.X -= textView.TextContainerInset.Left;
tappedPoint.Y -= textView.TextContainerInset.Top;
var layoutManager = textView.LayoutManager;
nfloat tmp = 0;
var tappedCharacterIndex = layoutManager.CharacterIndexForPoint (tappedPoint, textView.TextContainer, ref tmp);
NSRange range = new NSRange();
var url = textView.AttributedText.GetAttribute ("TextLinkAttributeName", (nint)tappedCharacterIndex, out range) as NSString;
if (url == null)
return;
UIApplication.SharedApplication.OpenUrl (new NSUrl (url.ToString()));
});
ContactsTextView.AddGestureRecognizer (tapRecognizer);
Also, es ist ziemlich grobe Lösung und es sollte zusätzliche Kontrollen geben, aber ich denke, die Idee selbst ist ziemlich klar. Es kann leicht auf native Lösungen in Swift oder Objective-C angewendet werden.
https://github.com/TextureGroup/Texture/pull/290 –