2017-04-13 8 views
0

UIMenuItemメッセージに影響を与えることなく、デフォルトUIMenuItemメッセージに影響を与えずにデフォルトのUIMenuItemを無効にする方法UIMenuItem?

enter image description here

を無効にする方法はありますか? enter image description here

のviewDidLoad:

JSQMessagesCollectionViewCell.registerMenuAction(#selector(UIResponderStandardEditActions.delete(_:))) 
    UIMenuController.shared.menuItems = [UIMenuItem.init(title: "Delete", action: Selector(("delete")))] 
+0

あなたはコピーを無効にしたいん - などを削除しますか? – Jack

+0

@Jackはい、無効にすることも可能Selectable –

+0

'cellForRowメソッド'の 'cell.textView.selectable = false'を試してください – Jack

答えて

0

使用

cell.textView.selectable = false あなたが長いmessageBubbleを押したときに表示されるものを選択cellForRow方法ここで

+1

実際には、textViewがnilでないかどうかを最初にチェックし、' isSelectable'をfalseに設定しなければなりません。 AccessoryButtonを押すとクラッシュする –

0

インチ

override func collectionView(_ collectionView: UICollectionView, canPerformAction action: Selector, forItemAt indexPath: IndexPath, withSender sender: Any?) -> Bool { 

    if (action == #selector(UIResponderStandardEditActions.copy(_:))) { 

     if(messages[indexPath.row].isMediaMessage) { 
      return false 
     } else { 
      return true 
     } 
    } 
    if (action == #selector(UIResponderStandardEditActions.cut(_:))) { 

     if(messages[indexPath.row].isMediaMessage) { 
      return false 
     } else { 
      return false 
     } 
    } 
    if (action == #selector(UIResponderStandardEditActions.paste(_:))) { 

     if(messages[indexPath.row].isMediaMessage) { 
      return false 
     } else { 
      return false 
     } 
    } 

    if (action == #selector(UIResponderStandardEditActions.delete(_:))) { 

     if(messages[indexPath.row].isMediaMessage) { 
      return true 
     } else { 
      return true 
     } 
    } 

    return super.canPerformAction(action, withSender: sender) 
} 

そして、あなたがしたい項目を選択した後に何が起こるか、

override func collectionView(_ collectionView: UICollectionView, performAction action: Selector, forItemAt indexPath: IndexPath, withSender sender: Any?) { 

    if (action == #selector(UIResponderStandardEditActions.delete(_:))) { 
     print("deleted") 
     print(indexPath.row) 

     let messageKey = messages[indexPath.row].keyID 

     print("messageKey") 
     print(messageKey!) 

     messages.remove(at: indexPath.row) 
     collectionView.reloadData() 
    } 
    if (action == #selector(UIResponderStandardEditActions.copy(_:))) { 
     // do stuff 
    } 
} 

}

関連する問題