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