UIContextMenuInteraction, нажав на пузырь

Я хочу установить UIContextMenuInteraction долгим нажатием на пузырь в ячейке. Но теперь контекстное меню появляется, когда вы касаетесь любого места в ячейке. Но мне он нужен только для пузыря. Я имею в виду, когда вы нажимаете на пузырек, появляется контекстное меню. Когда вы касаетесь любого места, но не пузыря, контекстное меню не появляется. КАК Я МОГУ СДЕЛАТЬ? Для меня это очень сложный вопрос.

 @available(iOS 13.0, *)
    func contextMenuInteraction(_ interaction: UIContextMenuInteraction, configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {
        guard let indexPath = messagesTable.indexPathForSelectedRow else {
            return nil
        }
        return presenter.tapOnMessageiOS13(at: indexPath)
    }

    static var indexPathCellConfiguration: IndexPath?

    @available(iOS 13.0, *)
    func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
        DialogController.indexPathCellConfiguration = indexPath
        return presenter.tapOnMessageiOS13(at: indexPath)
    }

    @available(iOS 13.0, *)
    func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? {
        guard let cell = tableView.cellForRow(at: DialogController.indexPathCellConfiguration!) else {
            return nil
        }
        guard let c = cell as? OutcomingMessageCell else {
            return nil
        }
        let params = UIPreviewParameters()
        params.backgroundColor = UIColor.clear
        let preview = UITargetedPreview(
            view: c.bubbleView,
            parameters: params
        )
        return preview
    }

    @available(iOS 13.0, *)
    func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? {
        guard let cell = tableView.cellForRow(at: DialogController.indexPathCellConfiguration!) else {
            return nil
        }

        guard let c = cell as? OutcomingMessageCell else {
            return nil
        }
        let params = UIPreviewParameters()
        params.backgroundColor = UIColor.clear
        let preview = UITargetedPreview(
            view: c.messageTextView,
            parameters: params
        )
        return preview
    }

Пузырь находится внутри OutcomingMessageCell, который является настраиваемым UITableViewCell

экран контекстного меню, нажав сейчас

0 ответов

Другие вопросы по тегам