Расширения протокола с селекторами в Swift

Я пытаюсь расширить протокол в Swift, добавив функцию registerGestureRecognizers. Вот полная реализация.

FilterableView используется классами, которые наследуются от UIImageView.

import UIKit protocol FilterableView : class { var name :String { get } var view :UIImageView { get } func applyFilter(originalImage :UIImage) -> UIImage } extension FilterableView { func registerGestureRecognizers() { let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(Self.filterTapped(_:))) } func filterTapped(recognizer :UITapGestureRecognizer) { print("filter Tapped") } } 

На этой строке:

  let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(Self.filterTapped(_:))) 

Я получаю следующее сообщение:

 Argument of '#selector' refers to a method that is not exposed to Objective-C 

Что мне не хватает?

Я добавил ключевое слово @objc, но те же проблемы.

введите описание изображения здесь

ОБНОВЛЕНИЕ 2:

Теперь у меня проблемы в моих классах, которые соответствуют протоколу FilterableView. Xcode жалуется, что я должен реализовать функцию filterTapped в своих классах, хотя я представил реализацию в методе расширения протокола.

One Solution collect form web for “Расширения протокола с селекторами в Swift”

Повторите свое редактирование: вы добавили неправильную функцию в свой протокол. Добавить func filterTapped(recognizer: UITapGestureRecognizer) не func registerGestureRecognizers() .

 @objc protocol FilterableView: class { var name: String { get } var view: UIImageView { get } func applyFilter(originalImage: UIImage) -> UIImage func filterTapped(recognizer: UITapGestureRecognizer) } extension FilterableView { func registerGestureRecognizers() { let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(Self.filterTapped(_:))) } func filterTapped(recognizer :UITapGestureRecognizer) { print("filter Tapped") } } 
  • Отключение клавиатуры при нажатии кнопки, программно с быстрым?
  • Фильтр Swift по объекту NSDate
  • Как очистить учетные данные SFSafariViewController?
  • Разверните кортеж в быстрой
  • Настройка отношения NSManagedObject в Swift
  • Тип не имеет подписчиков?
  • Как ограничить область перетаскивания для изображений
  • быстрый UIActivityIndicatorView при NSURLConnection
  • Запрос обратного вызова OAuthSwift на основной поток
  • Использование одного и того же UIWebView для разных viewControllers
  • Пользовательский шрифт в Xcode 6
  • Interesting Posts

    Генерация кода Core Data не поддерживается для Swift 2.3

    Можно ли обнаружить соединение LTE с помощью SDK iOS?

    Добавьте строки в UITableView при прокрутке вниз

    Что такое долгосрочный метод, который я могу использовать для уникальной идентификации устройства iOS?

    Как получить уже запущенный UILocalNotification

    Структуры Swift не работают с конфигурациями сборки, отличными от «Debug» или «Release»: нет такого модуля

    Как добавить расходные материалы в покупки приложений с помощью NSUserDefaults, а не мой собственный сервер?

    FileTransfer с помощью XmppFrameWork в ios

    Как я могу перезапустить анимацию на основе блоков, когда приложение выходит на передний план?

    Захват журнала не запускался в течение разумного промежутка времени. Ошибка при попытке запуска тестов iOS на удаленном сервере приложений.

    Логика раздела UITableView indexPath

    Как добавить заголовок и кнопку «Готово» на панели инструментов в модальном виде

    Есть ли способ защитить контент (изображения, звуки) в приложении для iPhone?

    Вход в Facebook для приложений iOS

    AVPlayer Video Gravity Positioning?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.