【问题标题】:UIMenuController and TapGesture reappears on movementUIMenuController 和 TapGesture 在移动时重新出现
【发布时间】:2017-12-30 22:18:40
【问题描述】:

我正在处理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)

【问题讨论】:

    标签: ios swift xcode uitapgesturerecognizer uimenucontroller


    【解决方案1】:

    好吧,我终于像这样解决了:

    斯威夫特 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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 2020-09-14
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多