Ios UIMenuController和TAPPORATE在移动时重新出现

Ios UIMenuController和TAPPORATE在移动时重新出现,ios,swift,xcode,uitapgesturerecognizer,uimenucontroller,Ios,Swift,Xcode,Uitapgesturerecognizer,Uimenucontroller,我正在处理UITableView上的uitappostation,并在所选UITableView单元格上显示UIMenuController。当我选择并显示菜单时,如果我将手指移到单元格上,它似乎一直在显示菜单,我一点也不喜欢它的外观 有什么办法可以避免吗 谢谢大家! 点击手势代码(Swift 2.3): let longPressGesture:UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, a

我正在处理
UITableView
上的
uitappostation
,并在所选
UITableView单元格上显示
UIMenuController
。当我选择并显示菜单时,如果我将手指移到单元格上,它似乎一直在显示菜单,我一点也不喜欢它的外观

有什么办法可以避免吗

谢谢大家!

点击手势代码(Swift 2.3):

let longPressGesture:UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress))
longPressGesture.minimumPressDuration = 0.5 
longPressGesture.delegate = self
self.messagesTableView.addGestureRecognizer(longPressGesture)

我终于解决了这个问题:

Swift 2

声明此全局变量

var menuControllerOpened:Bool = false
在tagGestureHandler上生成块:

func handleLongPress(longPressGesture:UILongPressGestureRecognizer) {

    if !self.menuControllerOpened {
        let p = longPressGesture.locationInView(self.messagesTableView)
        self.selectedIndexPathMenu = self.messagesTableView.indexPathForRowAtPoint(p)
        if self.selectedIndexPathMenu != nil {
            //Do something you want
            let menu = UIMenuController.sharedMenuController()
            let reportItem = UIMenuItem(title: "Reportar usuario", action: #selector(reportMessageItem))
            menu.menuItems = [reportItem]
            menu.setTargetRect(cell.frame, inView: self.messagesTableView)
            menu.setMenuVisible(true, animated: true)
        }
    }

}
但是配置一些通知事件,这些事件将在显示或隐藏MenuController时处理:

func configureMenuControllerEvents() {
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(handleMenuControllerShow), name: UIMenuControllerWillShowMenuNotification, object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(handleMenuControllerHide), name: UIMenuControllerWillHideMenuNotification, object: nil)

}

func handleMenuControllerShow() {
    self.menuControllerOpened = true
}

func handleMenuControllerHide() {
    self.menuControllerOpened = false
}