Недавно я начал обновлять свое приложение до Swift 2.0, но столкнулся с проблемой, которая имеет сотни разных ответов на SO, ни один из которых, похоже, не связан с моей проблемой.
(Это работало до обновления приложения до Swift 2.0), но я не смог найти никаких изменений, внесенных в распознаватели жестов?
Вот полная ошибка, которую я получаю:
[Stocks.SidePanelViewController proFormulaTapGesture]: нераспознанный селектор отправлен в экземпляр 0x14f06ae00
Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «-[Stocks.SidePanelViewController proFormulaTapGesture]: нераспознанный селектор отправлен экземпляру 0x14f06ae00»
*** First throw call stack: (0x1830904d0 0x197afff9c 0x1830971ec 0x183094188 0x182f9920c 0x188c3c58c 0x188899b50 0x18872d104 0x188c3bc30 0x1886ed28c 0x1886eb3ac 0x18872b088 0x18872a5ec 0x1886fb908 0x1886f9fac 0x183047d6c 0x183047800 0x183045500 0x182f75280 0x18e0ec0cc 0x188762df8 0x100158184 0x1983428b8) libc++abi.dylib: terminating with uncaught exception of type NSException
Это простой жест касания. Но, похоже, он больше не распознает селектор.
Вот код, который я использую для настройки распознавателя:
let proFormulaTap = UITapGestureRecognizer()
proFormulaTap.addTarget(self, action:"proFormulaTapGesture")
proFormulaView.addGestureRecognizer(proFormulaTap)
Вот функция, которую я пытаюсь запустить:
func proFormulaTapGesture() throws {
print("proFormulaTapGesture")
selectView(proFormulaView)
selectedMenuItem = 0
Formula = 1
menuTabBarController.selectedIndex = 0
navigationController?.navigationBar.topItem!.title = "BASIC FORMULA"
try (menuTabBarController.viewControllers as! [SuggestionsViewController])[0].loadSuggestions()
}
Однако, поскольку он никогда не печатает proFormulaTapGesture в консоли. Я определенно думаю, что ошибка возникает до функции. Также предлагается ошибка с упоминанием селектора.
Очевидно, что после обновления до Swift 2.0 функция try/catch была добавлена, но ничего не изменилось в настройке tapGestureRecognizer.
Я попытался удалить броски и попробовать из функции, но проблема не устранена. Я также попытался сделать кнопку вместо распознавателя жестов касания. Но я все еще получаю ту же ошибку, предполагая, что это может быть проблема с селектором (функцией), а не с жестом/кнопкой касания. Однако все мои другие кнопки в моем приложении работают нормально?
Я также попытался переименовать селектор / функцию и распознаватель жестов касания. Все такой же.
Оригинальный код был запрограммирован на Swift, а не на Obj-C. Броски и попытки были добавлены во время преобразования кода Apple в Swift 2.0.
Любая помощь в том, почему это внезапно сломалось, будет принята с благодарностью.
Спасибо!
@objc func proFormulaTapGesture()
& Использование Swift с Cocoa и Objective-C. - person zrzka   schedule 27.07.2015UITapGestureRecognizer
(Obj-C) вызывает ваш код Swift. - person zrzka   schedule 27.07.2015@objc
требуется, когда методprivate
. Они не отображаются автоматически в Objective-C. - person zrzka   schedule 27.07.2015