ios - 将数字插入 UiTextView 并检测数字

标签 ios swift uitextview swift4

我有一个 UITextView,其中包含大量文本,末尾有一个数字。我试图检测 TextView 中的数字,但无法实现。我只能找到链接才找到解决方案。

我正在使用 NSAttributedString 来显示文本。

.dataDetectorTypes 似乎不起作用。谁能帮帮我

我正在尝试这样。

let middleTextView: UITextView = {
        let tv = UITextView();
        let attributedText = NSMutableAttributedString(string: "Your NetCode will be sent to", attributes: [NSAttributedStringKey.font : UIFont.systemFont(ofSize: 14)]);
        attributedText.append(NSAttributedString(string: "\n\nXXXX XXX 252", attributes: [NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize: 16)]));
        attributedText.append(NSMutableAttributedString(string: "\n\n To update you mobile number call tel://13 2221", attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 12)]));
//        let url = NSURL(string: "tel://\(1234)");
//        tv.text = url;
        tv.attributedText = attributedText;
        tv.textAlignment = .center
        tv.backgroundColor = UIColor.clear;
        tv.dataDetectorTypes = .phoneNumber;
        tv.isEditable = false;
        tv.isSelectable = false;
        tv.translatesAutoresizingMaskIntoConstraints = false;
        return tv;
    }();

最佳答案

我发现您正在使用 Swift 4 的 NSAttributedStringKey,因此我将该标签添加到您的问题中。

您必须手动创建电话 URL 并设置 isSelectable = true,否则 TextView 中不会发生交互:

let middleTextView: UITextView = {
    let attributedText = NSMutableAttributedString(string: "Your NetCode will be sent to", attributes: [.font : UIFont.systemFont(ofSize: 14)])
    attributedText.append(NSAttributedString(string: "\n\nXXXX XXX 252", attributes: [.font: UIFont.boldSystemFont(ofSize: 16)]))
    attributedText.append(NSAttributedString(string: "\n\n To update you mobile number ", attributes: [.font: UIFont.systemFont(ofSize: 12)]))

    let phoneNumber = "13 2221"
    let phoneNumberAttributes: [NSAttributedStringKey: Any] = [
        .font: UIFont.systemFont(ofSize: 12),
        .foregroundColor: UIColor.blue,
        .link: URL(string: "tel://" + phoneNumber.replacingOccurrences(of: " ", with: ""))!,
    ]
    attributedText.append(NSAttributedString(string: phoneNumber, attributes: phoneNumberAttributes))

    tv.attributedText = attributedText
    tv.textAlignment = .center
    tv.backgroundColor = UIColor.clear
    tv.isEditable = false
    tv.isSelectable = true // you must set this to true
    return tv
}()

关于ios - 将数字插入 UiTextView 并检测数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45128370/

相关文章:

ios - "ShaderTypes.h"中演示的 Metal 着色器类型顶点和缓冲区最佳实践

ios - 如何使用字符串作为 SKScene 的名称

ios - 如何以最高精度比较小数点后30位的双数?

ios - 在 iOS 设备上测试时 Unity 游戏滞后

Swift - 取字典元素的平均值

ios - DT AttributedText ContentView 绘制边框

iphone - UITextView 中光标的像素位置

iphone - UITextView 只是水平滚动帮助

ios - dispatch_group 中的内存泄漏

ios - 弹出 View 时,完成处理程序会发生什么?