gpt4 book ai didi

ios - 在 UILabel 上显示 iPhone 剪切复制粘贴菜单

转载 作者:IT王子 更新时间:2023-10-29 05:01:06 24 4
gpt4 key购买 nike

  1. 我们能否像为 UITextField 那样为 UILabel 启用剪切复制粘贴菜单?

  2. 如果没有,我需要将我的UILabel 转换为UITextField,我怎样才能启用剪切复制粘贴菜单并且不允许修改内容?

最佳答案

对于 Swift 你必须实现这个类:

import UIKit

class CopyableLabel: UILabel {

override init(frame: CGRect) {
super.init(frame: frame)
self.sharedInit()
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.sharedInit()
}

func sharedInit() {
self.isUserInteractionEnabled = true
let gesture = UILongPressGestureRecognizer(target: self, action: #selector(self.showMenu))
self.addGestureRecognizer(gesture)
}

@objc func showMenu(_ recognizer: UILongPressGestureRecognizer) {
self.becomeFirstResponder()

let menu = UIMenuController.shared

let locationOfTouchInLabel = recognizer.location(in: self)

if !menu.isMenuVisible {
var rect = bounds
rect.origin = locationOfTouchInLabel
rect.size = CGSize(width: 1, height: 1)

menu.showMenu(from: self, rect: rect)
}
}

override func copy(_ sender: Any?) {
let board = UIPasteboard.general

board.string = text

let menu = UIMenuController.shared

menu.setMenuVisible(false, animated: true)
}

override var canBecomeFirstResponder: Bool {
return true
}

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return action == #selector(UIResponderStandardEditActions.copy)
}
}

在你的 Storyboard中,只需将 UILabel 子类化为 CopyableLabel

关于ios - 在 UILabel 上显示 iPhone 剪切复制粘贴菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1246198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com