1

それほど重要ではありませんが、ここのように NSDataDetector を使用して weblink に使用すると、.com、.us、さらには .ca ですべての Web サイトを表示できますが、.io では表示できませんhttp://website.ioを使用すると、動作していますが、テキストが website.io の場合は動作していません。

誰かがそれを機能させるための回避策を持っていますか?

必要に応じて Playground で動作するサンプル コード:

var string = "website.io is not ok but website.com is ok"
var error: NSError?
let detector = NSDataDetector(types: NSTextCheckingType.Link.rawValue, error: &error)
detector?.enumerateMatchesInString(string, options: nil, range: NSMakeRange(0, (string as NSString).length)) { (result, flags, _) in
    println(result)
    println(flags)
}

出力は website.com {25,11} です。

website.io {0, 10} がありません

編集:

ウィキ英語では書かれていませんが、私の言語では、.ad .am .cd .co .io .me .mu .nu .tv .je .sr のような「自己満足」ドメインがあります。

私は試してみただけで、.me だけが機能します。この「まだ」トップレベル ドメインに対する Apple の制限ですか?

4

2 に答える 2

2

お気軽に Apple にバグを報告してください。ただし、「io」はイタリア語で「I」を意味し、文末のドットの後にスペースを入れない人がいるため、意図的に省略されていると思います。したがって、.io が追加された場合、「buon giorno.io non lo so」がリンクとして検出されます (そうではありません)。http:// または <> のような別のマーカーを含めると、強制的に検出されます。

于 2015-05-13T19:57:39.723 に答える
2

一部の TLD はNSDataDetector、非公開の理由で によって検出されません (ただし、Deniau 氏の推測はもっともらしく思われます)。

一般的な回避策は、すべての TLD を検出するtwitter-text-objcを使用することです。[TwitterText URLsInText:]一致する URL の配列を取得するために呼び出します。rangeこれらによって返されたを使用して、リンクなどを作成できます。

于 2015-05-13T20:02:38.480 に答える