Swift 2.2 # выбор в ошибке компилятора расширения протокола

У меня есть расширение протокола, которое раньше работало идеально до Swift 2.2.

Теперь у меня есть предупреждение, которое говорит мне, чтобы использовать новый#selector, но если я добавлю это

с помощью Objective-C Selector не объявлено ни одного метода.

Я попытался воспроизвести проблему в нескольких строках кода, которые можно легко скопировать и вставить на игровую площадку.

  protocol Tappable {
    func addTapGestureRecognizer()
    func tapGestureDetected(gesture:UITapGestureRecognizer)
}

extension Tappable where Self: UIView {
    func addTapGestureRecognizer() {
        let gesture = UITapGestureRecognizer(target: self, action:#selector(Tappable.tapGestureDetected(_:)))
        addGestureRecognizer(gesture)
    }
}

class TapView: UIView, Tappable {
    func tapGestureDetected(gesture:UITapGestureRecognizer) {
        print("Tapped")
    }
}

Также есть предложение добавить этот метод в протокол@objc, но если я это сделаю, он также попросит меня добавить его к классу, который его реализует, но как только я добавлю этот класс, он больше не будет соответствовать протоколу, потому что кажется, что он не видит реализацию в расширении протокола.
Как я могу реализовать это правильно?

Ответы на вопрос(5)

Ваш ответ на вопрос