Я не могу заставить UIPageControl вызывать его методы действия, когда он встроен в UIToolbar. Вот моя настройка:
У моего контроллера представления есть большая панель инструментов внизу, на которой есть две большие кнопки с обеих сторон, так что пользователю очень легко нажимать их. Я хочу использовать пространство между ними и поместить туда UIPageControl. Я использую scrollView для отображения пользовательских изображений по горизонтали, которые различаются по размеру, и хочу, чтобы пользователь знал, сколько точек используется в элементе управления разбиением на страницы.
Я использую конструктор интерфейсов и перетащил там в UIToolbar. Я могу установить, какая страница отображается, используя код в func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)
, когда пользователь прокручивает представление, и это отлично работает. Что не работает, так это касание пользователем самого элемента управления страницей. Я реализовал это действие и связал его с событием изменения значения:
@IBAction func pageChanged(_ sender: UIPageControl) {
print("Page Changed to : \(sender.currentPage)")
}
Я также попытался реализовать метод, который реагирует на внутреннее прикосновение. Ни того, ни другого не называют. Я попытался реализовать метод, который реагирует на действие в UIBarButtonItem, которое тоже не вызывается.
Когда я смотрю на иерархию представлений в IB, UIPagingControl находится внутри UIBarButtonItem, как и ожидалось. Я делал это раньше с UIView и UIButton внутри UIBarButton, и я могу без проблем фиксировать события для этих элементов.
Скриншот настройки раскадровки
Я не могу найти в Интернете ничего, что помогло бы мне понять, почему я не могу обнаружить взаимодействие пользователя с элементом управления разбиением на страницы. Если я перетащу элемент управления страницей на панель навигации, он будет работать нормально и будут вызваны мои методы действий.
Спасибо за любую помощь / руководство!