UIContextMenuInteraction, нажав на пузырь - PullRequest
0 голосов
/ 26 февраля 2020

Я хочу установить 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
    }

Bubble находится внутри OutcomingMessageCell - это пользовательский UITableViewCell

контекстного меню, нажмите сейчас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...