Настраиваемое событие для сенсорного вызова
Я использую SMCalloutView Для создания пользовательского выноски для моего mapView. Проблема, с которой я сталкиваюсь, заключается в том, что когда вид выноски виден, а пользователь нажимает на выноску, если под представлением выноски находится другая аннотация, она отклоняет текущую выбранную аннотацию и выбирает ту, которая находится под видимым видом выноски.
Я подумал, что, возможно, мне удастся создать подкласс UIView, чтобы перехватывать все сенсорные события. Итак, я создал подкласс UIView, все функции запускаются корректно, если я добавляю его непосредственно в mapView. Но когда я использую его для поповера, кажется, что он совсем не работает.
import Foundation
import UIKit
class popOverSub: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
let myTap = UITapGestureRecognizer(target: self, action: "touchEventTest")
addGestureRecognizer(myTap)
userInteractionEnabled = true
backgroundColor = UIColor.greenColor()
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func touchEventTest() {
println("touchEventTest")
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
println("touch begins")
}
}
Для завершения здесь я вызываю пользовательский CalloutView.
func mapView(mapView: MKMapView!, didSelectAnnotationView view: MKAnnotationView!) {
let popView = popOverSub(frame: CGRect(x: 0, y: 0, width: 100, height: 200))
calloutView.contentView = popView
self.calloutView.calloutOffset = CGPoint(x: view.frame.width*0.5, y: 0)
self.calloutView.delegate = self
calloutView.presentCalloutFromRect(calloutView.bounds, inLayer: view.layer, constrainedToLayer: self.mapView.layer, animated: true)
}
Что я должен сделать. Если пользователь нажимает в представлении выноски, он не отменяет выноску и не передает событие касания в mapView/Annotation внизу. Вместо этого необходимо вызвать функцию. Любые советы будут великолепны.