You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.1 KiB

  1. //
  2. // CopyableLabel.swift
  3. // GME Remit
  4. //
  5. // Created by InKwon Devik Kim on 05/07/2019.
  6. // Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class CopyableLabel: UILabel {
  10. override init(frame: CGRect) {
  11. super.init(frame: frame)
  12. internalInit()
  13. }
  14. required init?(coder aDecoder: NSCoder) {
  15. super.init(coder: aDecoder)
  16. internalInit()
  17. }
  18. private func internalInit() {
  19. isUserInteractionEnabled = true
  20. addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(setMenu(_:))))
  21. }
  22. override var canBecomeFirstResponder: Bool {
  23. return true
  24. }
  25. override func copy(_ sender: Any?) {
  26. let board = UIPasteboard.general
  27. board.string = text
  28. }
  29. override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
  30. return action == #selector(copy(_:))
  31. }
  32. @objc private func setMenu(_ sender: AnyObject) {
  33. becomeFirstResponder()
  34. let menu = UIMenuController.shared
  35. if !menu.isMenuVisible {
  36. menu.setTargetRect(bounds, in: self)
  37. menu.setMenuVisible(true, animated: true)
  38. }
  39. }
  40. }