在 Swift 的 UIMenuController 中禁用 UIMenuItems 的 flickering/blinking

Disable the flickering/blinking of UIMenuItems in UIMenuController in Swift

如何去除 UIMenuControllerUIMenuItems 的 flickering/blinking?我目前可以复制和粘贴项目,但是当我的应用程序在 UILongPressGestureRecognizer 的操作中显示菜单时,它们开始闪烁。

@objc func viewLongPressed(_ recognizer: UILongPressGestureRecognizer) {
    [...]

    UIMenuController.shared.setMenuVisible(true, animated: true)
}

在iOS中是否有任何实现?

这是因为如果您持续按识别器视图,UILongPressGestureRecognizer 事件会持续 被识别。重复调用 UIMenuControllersetMenuVisible(animated:) 方法会导致您描述的闪烁效果。

要解决此问题,仅当识别器的状态为 .began 时才显示菜单。

@objc func viewLongPressed(_ recognizer: UILongPressGestureRecognizer) {
    [...]

    if recognizer.state == .began {
        UIMenuController.shared.setMenuVisible(true, animated: true)
    }
}