クリック可能なリンクを機能させるための解決策を検討しています。UITextView + NSAttributedString を使用するとこれを機能させることができますが、UITableViewCell の場合は適切に自動レイアウトされません。
これで TTTAttributedLabel をプロジェクトに追加し、ビューのスタイルを完璧に設定しました。リンクも青色に変わり、下線が引かれます。
ただし、それらをクリックしても何も起こりません。コントローラーに TTTAttributedLabelDelegate を実装し、ストーリーボードのラベルに MyLabel を実装しました (これは TTTAttributedLabel を拡張するだけで、デリゲート オプションを同じ関数内で起動させたいためです)。今のところ、コントローラーをデリゲートに設定しましたが、それ自体を指すとうまくいかないかもしれないと考えていました。
しかし、これらの関数はどれも起動されません。ブレークポイントとログを取得しました。
didSelectLinkWithUrl と didLongPressLinkWithUrl を実装しました。
func attributedLabel(label: TTTAttributedLabel!, didSelectLinkWithURL url: NSURL!) {
Debug.log("link clicked")
}
func attributedLabel(label: TTTAttributedLabel!, didLongPressLinkWithURL url: NSURL!, atPoint point: CGPoint) {
Debug.log("link long clicked")
}
出口
@IBOutlet weak var content: MyLabel!
マイラベル
import UIKit import TTTAttributedLabel
class MyLabel : TTTAttributedLabel, TTTAttributedLabelDelegate {
override func didMoveToSuperview() {
if (self.delegate == nil) {
self.delegate = self
}
self.enabledTextCheckingTypes = NSTextCheckingType.Link.rawValue
self.userInteractionEnabled = true
}
func attributedLabel(label: TTTAttributedLabel!, didSelectLinkWithURL url: NSURL!) {
Debug.log("link clicked")
}
func attributedLabel(label: TTTAttributedLabel!, didLongPressLinkWithURL url: NSURL!, atPoint point: CGPoint) {
Debug.log("link long clicked")
}
私が何を見逃しているか知っている人はいますか?
アップデート
URL f/e http://example.comを貼り付けるだけでアクティブになり、実際にクリック可能になり、didSelectLinkWithUrl がクリック可能になることがわかりましたが、属性付きの文字列が必要であり、HTML 文字列に基づいています。