UIMenuController在项目中的使用

Posted 托雷斯也学iOS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIMenuController在项目中的使用相关的知识,希望对你有一定的参考价值。

//BCmessageCell文件代码

typealias BCChatCellAuxiliarytypeBlock = (cell:BCMessageCell,message:ArrowIMMessage,type:BCChatCellType)->Void
var _auxiliaryBlock:BCChatCellAuxiliarytypeBlock?
func longpressBubbleView(){
        self.becomeFirstResponder()
        let menuController = UIMenuController.sharedMenuController()
        let menuItem_1 = UIMenuItem.init(title: "复制", action: Selector("copyChatMessage"))
//        let menuItem_2 = UIMenuItem.init(title: "删除", action: Selector("deleteChatMessage"))
//        let menuItem_3 = UIMenuItem.init(title: "收藏", action: Selector("saveChatMessage"))
//        let menuItem_4 = UIMenuItem.init(title: "转发", action: Selector("deliverChatMessage"))
        
        menuController.menuItems = [menuItem_1]
        menuController.setTargetRect((bubbleView?.frame)! , inView: self)
        menuController.setMenuVisible(true, animated: false)
//        delegate?.longPressBubbleView!(messageModel!)
    }
    func copyChatMessage(){
        if ((_auxiliaryBlock) != nil){
            _auxiliaryBlock!(cell: self,message: (self.messageModel?.message)!,type: .BCChatCellCopyStyle)
        }
    }
    
    func setAuxiliarytypeBlock(auxiliarytypeBlock:BCChatCellAuxiliarytypeBlock){
        _auxiliaryBlock = auxiliarytypeBlock
    }
    
    override func canBecomeFirstResponder()->Bool
    {
        return true
    }
    
    override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
            return action == Selector("copyChatMessage")
    }

  

//BCMessageViewController代码

写在func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 代理中
cell?.setAuxiliarytypeBlock({ (cell, message, type) -> Void in
                switch(type){
                case .BCChatCellCopyStyle:
                    let pasterBoard = UIPasteboard.generalPasteboard()
                    switch (message.messageFormat){
                    case .Text:
                        pasterBoard.string = message.context
                    case .Image: break
                    case .Audio: break
                    case .Video: break
                    case .File: break
                    case .Json: break
                    case .Location: break
                    case .At:
                        pasterBoard.string = message.context
                    default:break
                    
                    }
                case .BCChatCellDeleteStyle:break
                case .BCChatCellCollectionStyle:break
                case .BCChatCellDeliverStyle:break
                case .BCChatEarPhoneStyle:break
                }
            })

  

以上是关于UIMenuController在项目中的使用的主要内容,如果未能解决你的问题,请参考以下文章

UIMenuController 显示错误的项目

如何从 UIMenuController 中删除粘贴?

UIMenuController在label中的使用

只能有一个 UIMenuController 实例

使用按钮单击显示 UIMenuController

iOS:如何从 UIMenuController 获取选定的 UIMenuItem