gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:17:02 25 4
gpt4 key购买 nike

我正在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com