我有这个问题:我正在开发一个带有地图、集群和位置标记的应用程序。单击标记或群集时,将打开一个标注: 1)在标记的标注中,我有一个文本视图,但我无法滚动它,因为如果我点击它,背景上的地图会移动。2) 集群的标注是一个包含多个项目的 CollectionView,但我无法滚动它(水平方向设置),因为如果我点击 collectionView,地图也会移动。
那么,正如标题所说,如何在显示标注时将点击集中在标注上?
谢谢!
我猜你正在使用你自己的 CalloutView 类?
如果是这样,您可以实现委托以处理 CalloutView 上的点击或操作。
这是一个快速实现示例:
假设您在 CalloutView 中有一个最喜欢的按钮。
protocol MyCalloutViewDelegate: class
{
func MyCalloutViewDidTouchFavorite(calloutView: MyCalloutView)
}
class MyCalloutView: CalloutView
{
...
func favoriteButtonDidTouch()
{
self.delegate?.MyCalloutViewDidTouchFavorite(self)
}
}
在您的 MapViewController 中,您可以这样实现:
// MARK: - MyCalloutViewDelegate
func MyCalloutViewDidTouchFavorite(calloutView: MyCalloutView)
{
let viewController: FavoriteViewController = FavoriteViewController()
self.navigationController?.pushViewController(viewController, animated: true)
}
在此示例中,当用户点击 CalloutView 中的收藏按钮时,它将导航到 FavoriteViewController。
我希望这个示例将帮助您在 CalloutView 中处理 CollectionView 上的点击手势以执行特定操作。