ios - UIMenuController 和 TapGesture 在移动时重新出现

标签 ios swift xcode uitapgesturerecognizer uimenucontroller

我正在 UITableView 上处理 UITapGesture,并在选定的 UITableViewCell 上显示 UIMenuController。当我选择并出现菜单时,如果我将手指移到单元格上,菜单似乎会不断出现,而且我根本不喜欢它的外观。

有什么办法可以避免这种情况吗?

谢谢!

点击手势代码 (Swift 2.3):

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

enter image description here

最佳答案

最后我解决了这样的问题:

swift 2

声明这个全局变量

var menuControllerOpened:Bool = false

在 tagGestureHandler 上创建一个 block :

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
}

关于ios - UIMenuController 和 TapGesture 在移动时重新出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45295669/

相关文章:

iphone - iOS 代码签名身份

swift - Core Data 代码生成器如何决定是否将属性设为可选?

ios - iOS 中的多个持久存储协调器

IOS:使用自动布局根据标题文本调整 UIButton 高度?

generics - Swift 闭包中保留内存的生命周期

ios - Collection View 不会每次都重新加载

ios - StoryboardID 和 StoryboardSegueIdentifier 之间的区别

ios - 在 Swift 中将图层样式组合到多个 UIButton

ios - 自定义类不会自动显示 - Swift 3 iOS 10.2 Xcode 8

objective-c - 应用程序在 iPad 3 上崩溃,但在 iPad 2 上没有 - 崩溃日志