我想創建本地複製和粘貼體驗,iOS的,當你點擊並按住一個UITextField
提供 - 但我希望它在UILabel
而不是UITextField
工作。我想原生的iOS複製和粘貼UI上的UILabel
這是可能的,還是它只適用於UITextField
? 我是否需要創建自己的自定義用戶界面並在UIPasteboard
中解決問題,還是有更好的解決方案?
下面是一個典型的例子,雖然它通常也顯示放大後的循環:
我想創建本地複製和粘貼體驗,iOS的,當你點擊並按住一個UITextField
提供 - 但我希望它在UILabel
而不是UITextField
工作。我想原生的iOS複製和粘貼UI上的UILabel
這是可能的,還是它只適用於UITextField
? 我是否需要創建自己的自定義用戶界面並在UIPasteboard
中解決問題,還是有更好的解決方案?
下面是一個典型的例子,雖然它通常也顯示放大後的循環:
這是很難做到的標籤上的標準複印菜單。或者也許在那個時候我嘗試過但沒有成功。所以我只實現了一個完整的拷貝解決方案我做了類似下面 -
import UIKit
class KGCopyableLabel: UILabel {
override public var canBecomeFirstResponder: Bool {
get {
return true
}
}
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
func setup() {
isUserInteractionEnabled = true
addGestureRecognizer(UILongPressGestureRecognizer(
target: self,
action: #selector(showCopyMenu(sender:))
))
}
override func copy(_ sender: Any?) {
UIPasteboard.general.string = text
UIMenuController.shared.setMenuVisible(false, animated: true)
}
func showCopyMenu(sender: Any?) {
becomeFirstResponder()
let menu = UIMenuController.shared
if !menu.isMenuVisible {
menu.setTargetRect(bounds, in: self)
menu.setMenuVisible(true, animated: true)
}
}
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return (action == #selector(copy(_:)))
}
}
然後,您可以簡單的拖放標籤的故事板,並使其類型的KGCopyableLabel,它應該工作
謝謝,這將適用於複製。我想讓粘貼工作,我需要將我的'UILabel'轉換爲'UITextfield'。 – Brewski
[本文](HTTP:// stephenradford .me/make-uilabel-copyable /)會幫助你 –
謝謝,這可能對我的問題的複製部分有效。 – Brewski