私のカスタムMKAnnotationView
サブクラスは設定していませんimage
プロパティです。代わりに、表示されるいくつかのサブビューを処理します。カスタムMKAnnotationViewのタッチゾーンがばかげて狭いです
私は代理人に注釈タッチを検出するためにpublic func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView)
を実装します。
タッチゾーンはデフォルトでimage
プロパティで計算されるため、アノテーションビューのタッチゾーンは約1ピクセルです。ばかげてる。
これは私がそれを作成する方法である:
init(annotation: JZStreamAnnotation) {
self.imageView = UIImageView.init(image: <an image>)
self.imageView.contentMode = .center
super.init(annotation: annotation, reuseIdentifier: JZStreamAnnotationView.identifier)
self.canShowCallout = false
self.imageView.center = CGPoint(x: self.frame.width/2, y: self.frame.height/2)
self.addSubview(self.imageView)
}
I read this postが、私はHitTestメソッドがどのように動作するかを把握することはできません。ここでは何も作らない実装:
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if point.x > -100, point.x < 100, point.y > -100, point.y < 100 {
//return self
//return self.imageView
return super.hitTest(point, with: event)
}
return .none
}
if
句火災に位置breapointが、(super
/self
/imageView
)何もしない何でも返します。
最後に、私はこのようhitTest実装する場合:
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
return .none
}
と解雇場合、私は私のannotationView正確な中心、public func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView)
デリゲートメソッドにCLICあれば!
タッチゾーンを拡大するためのアドバイスはありますか?