我想从TextView中获得一个电话号码,以便在单击时呼叫该电话号码:
我面临的问题是,当点击链接时,消息应用反而打开了,我在iOS 12中尝试了以下代码,效果和预期的一样,但当我在iOS 13和14上尝试时,消息应用打开了,而不是使用“电话拨号器应用”拨打电话。
暂定1:
textView.Editable = false;
textView.DataDetectorTypes = UIDataDetectorType.PhoneNumber;
暂定2:
var phoneNumberLink = new Dictionary<string, string>(){ { "(855) 757-7328","tel:8557577328" } }
textView.Editable = false;
textView.SetAttributedTextForLinks("Please call us at (855) 757-7328", phoneNumberLink);
3条答案
按热度按时间abithluo1#
实际上
telpromt://0123456789
也不行,我必须拦截与URL的交互,推荐的ShouldInteractWithUrl
不起作用(ShouldInteractWithUrl
没有被触发或调用),所以我必须使用AllowUrlInteraction
代替,代码如下:出于某种原因,除了这一个,之前的选择对我都不起作用。
参见:https://forums.xamarin.com/discussion/60345/uitextview-and-clickable-phonenumbersHow to intercept click on link in UITextView?
mftmpeh82#
如上所述https://forums.xamarin.com/discussion/33798/open-phone-dialer-from-app
打开拨号器的正确方法是
确保没有空格。
ezykj2lf3#
我也遇到了同样的问题:QA人员说她无法显示呼叫操作表,但我无法显示消息对话框。
事实证明,如果你没有登录iCloud,点击
UITextView
上的链接的默认行为是打开消息应用对话框。结论
只需在手机上登录iCloud,
tel
方案URI就会正常工作。如果有特殊需要,确保即使用户未登录iCloud(因为大多数用户都已登录),也会显示呼叫操作表,请自行处理并在
UITextViewDelegate.textView(_:shouldInteractWith:in:interaction:)
中处理。