5

iOS Label オブジェクトに URL アドレスのリストがあります。ユーザーがリストからアイテムを選択してコピーし、それを iOS デバイスの Safari ブラウザーに貼り付けることはできないようです。これを達成する方法はありますか?

4

3 に答える 3

7

この機能は にはありませんUILabel

UITextFieldまたはを使用する必要がありますUITextView。また、その外観を変更して使用することを忘れないでください

[... setEditable:NO];
于 2013-03-03T18:12:36.347 に答える
7

UILabel を使用することは実際には可能ですが、サブクラス化を行う必要があるだけです。

最終結果: ユーザーがラベルを長押しすると、コピー バルーンが表示されます。

iOS でラベルを長押しした後のコピー バルーンを示す画像

ラベルをコピー可能にするための手順は次のとおりです (覚えている限り)。

  1. サブクラス UILabel
  2. userInteractionEnabled を設定 = はい
  3. canBecomeFirstResponder をオーバーライドして true を返す
  4. UILongPressGestureRecognizer を追加します
  5. ファーストレスポンダーになり、UIMenuController を提示

スウィフト 3:

let menu = UIMenuController.shared
if !menu.isMenuVisible {
    self.becomeFirstResponder()
    menu.setTargetRect(self.bounds, in: self)
    menu.setMenuVisible(true, animated: true)
}
  1. canPerformAction をオーバーライドしてコピーを許可する

スウィフト 3:

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        return action == #selector(UIResponderStandardEditActions.copy(_:))
}
  1. コピー メソッドをオーバーライドし、テキストを 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 に答える