swift - 用户点击时在 MessageKit 中打开图像
问题描述
当用户点击它时如何显示图像?
func configureMediaMessageImageView(_ imageView: UIImageView, for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) {
switch message.kind {
case .photo(let photoItem):
/// if we don't have a url, that means it's simply a pending message
guard let url = photoItem.url else {
imageView.kf.indicator?.startAnimatingView()
return
}
imageView.kf.indicatorType = .activity
imageView.kf.setImage(with: url)
imageView.addTapGesture {
print("hello")// NOT triggered
}
default:
break
}
}
func didTapImage(in cell: MessageCollectionViewCell) {
print("Hello") //Triggered
}
我不明白如何在这里打开图像!
这是我使用的代码,
解决方案
您需要实现 MessageCellDelegate。您不需要添加额外的手势识别器,它已经由 MessageKit 处理。使用此方法了解用户何时点击图像:
func didTapImage(in cell: MessageCollectionViewCell) {
guard let indexPath = messagesCollectionView.indexPath(for: cell),
let message = messagesCollectionView.messagesDataSource?.messageForItem(at: indexPath, in: messagesCollectionView) else {
return
}
if case MessageKind.photo(let media) = message.kind, let imageURL = media.url {
/// Here is the required url
}
print("Image tapped")
}
您可以从消息对象访问图像 URL。现在,用于显示图像。您需要创建自己的 GalleryView 并传入 URL
推荐阅读
- kdb - 从KDB中导入的CSV按月分类日期值?
- android - 如何删除 TextInputLayout 可绘制填充?
- numpy - PIL图像到numpy数组没有复制
- c# - 使用 Microsoft.AspNetCore.Authentication.AzureADB2C.UI 时如何覆盖/替换错误页面处理?
- android - 反应导航动画切换页面过渡
- python - Flask:api errorhandler 执行了两次
- r - RShiny中侧边栏和主面板的固定位置
- html - Bootstrap 4:如何修复我的项目以占用所有空间,即使是内容较少的项目?
- python - 在有向加权图中找到访问每个节点的最短路径,对重新访问节点和边没有限制
- php - 使用php时如何确保字段中的字符长度/设置长度设置为特定数字?