IBAction на кнопке не будет вызываться на пользовательской клавиатуре

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

1- Введите текст с помощью кнопок с отдельными буквами.

2- Нажмите кнопку поиска.

Что касается №1, у меня есть работающие IBActions, которые вызываются при каждом нажатии кнопки. Например, вот действие на букву «м»:

@IBAction func mPressed(button: UIButton) {
    searchBar.text! += "m"
}

Однако кнопка поиска IBAction не будет вызывать:

@IBAction func searchPressed(button: UIButton) {
    print("searchPressed")
}

Когда я подключаю кнопку поиска в раскадровке к действию «mPressed», это действие вызывается. Но когда я снова подключаю его к функции «searchPressed» выше, он снова не работает.

Я также убедился, что правильно подключил кнопку к действию.

Действие поиска связано с кнопкой поиска

Действие "m" связано с кнопкой "m"

Спасибо!


person randyp    schedule 11.07.2016    source источник


Ответы (1)


На вашем снимке экрана кнопка поиска подключена к методу searchButtonPressed, но в коде у вас есть метод searchPressed.
Удалите подключение к searchButtonPressed и снова подключитесь к searchPressed, и все заработает.

person Igor    schedule 11.07.2016
comment
Большое спасибо, но, к сожалению, это не решило проблему. - person randyp; 12.07.2016
comment
Попробуйте удалить метод searchPressed в коде, затем перетащите кнопку поиска, удерживая клавишу Ctrl, из IB в код, чтобы позволить XCode снова создать этот метод. - person Igor; 12.07.2016
comment
Проверьте в IB Attribute Inspector Поведение -> Включено. - person Igor; 12.07.2016
comment
Как вариант, добавить новую кнопку и подключиться к коду. Если будет работать, настройте его и замените им старую кнопку - person Igor; 12.07.2016
comment
Оказывается, операторы печати не работали, поэтому это привело меня к неправильной ошибке. Вызывалось действие, просто логика функции внутри действия была не совсем правильной, поэтому я не мог сказать. Большое спасибо за совет. - person randyp; 12.07.2016
comment
Значит, в вашем func searchPressed был другой код, а не print("searchPressed")? - person Igor; 12.07.2016
comment
У меня было print("searchPressed") в searchPressed IBAction, просто оно не печаталось. Но как ни странно все остальное в IBAction работало. Но, как я уже сказал, функция, вызываемая в действии, имела неправильную логику, которая, как и оператор печати, не работал, также заставила меня думать, что проблема была в IBAction, хотя на самом деле она была в функции. Так что теперь он работает как надо. - person randyp; 12.07.2016
comment
странно, почему print("searchPressed") не сработало... Но, ладно, наконец-то ты решил проблему. - person Igor; 12.07.2016