iOS Label オブジェクトに URL アドレスのリストがあります。ユーザーがリストからアイテムを選択してコピーし、それを iOS デバイスの Safari ブラウザーに貼り付けることはできないようです。これを達成する方法はありますか?
3783 次
3 に答える
7
この機能は にはありませんUILabel
。
UITextField
またはを使用する必要がありますUITextView
。また、その外観を変更して使用することを忘れないでください
[... setEditable:NO];
于 2013-03-03T18:12:36.347 に答える
7
UILabel を使用することは実際には可能ですが、サブクラス化を行う必要があるだけです。
最終結果: ユーザーがラベルを長押しすると、コピー バルーンが表示されます。
ラベルをコピー可能にするための手順は次のとおりです (覚えている限り)。
- サブクラス UILabel
- userInteractionEnabled を設定 = はい
- canBecomeFirstResponder をオーバーライドして true を返す
- UILongPressGestureRecognizer を追加します
- ファーストレスポンダーになり、UIMenuController を提示
スウィフト 3:
let menu = UIMenuController.shared
if !menu.isMenuVisible {
self.becomeFirstResponder()
menu.setTargetRect(self.bounds, in: self)
menu.setMenuVisible(true, animated: true)
}
- canPerformAction をオーバーライドしてコピーを許可する
スウィフト 3:
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return action == #selector(UIResponderStandardEditActions.copy(_:))
}
- コピー メソッドをオーバーライドし、テキストを UIPasteboard し、UIMenuController を非表示にします
スウィフト 3:
let menu = UIMenuController.shared
let labelText = self.text ?? self.attributedText?.string
if let uLabelText = labelText {
let clipBoard = UIPasteboard.general
clipBoard.string = uText
}
menu.setMenuVisible(false, animated: true)
于 2016-10-05T12:40:25.413 に答える