2013-03-03 45 views
4

我有一個iOS標籤對象中的URL地址列表。似乎用戶不能從列表中選擇和複製項目並將其粘貼到iOS設備的Safari瀏覽器中。有沒有辦法做到這一點?可選的UILabel內容

回答

5

此功能不在UILabel

您需要使用UITextFieldUITextView。也不要忘記改變其外觀和使用

[... setEditable:NO]; 
+1

我不認爲這是供'UITextField'了嗎? (在iOS 9.3上) – nekonari 2016-03-23 15:10:43

5

它實際上是可以用的UILabel的事,只有你就必須做一些子類。

最終結果: 當用戶長按標籤時,他或她會看到一個複製氣球。

Picture showing copy-balloon after long-pressing a label on iOS

這裏有以允許用於製備標籤拷貝能(我的記憶)中的步驟:

  1. 子類的UILabel
  2. 組userInteractionEnabled = YES
  3. 倍率canBecomeFirstResponder和返回true
  4. add a UILongPressGestureRecognizer
  5. 成爲第一響應&本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(_:)) 
    } 
    
    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)