Если вы поддерживаете iOS 9 и новее, теперь это стандартное поведение - никакой специальной обработки не требуется.
Если вы поддерживаете iOS 8 и ниже, подкласс UIPageControl
и переопределите accessibilityIncrement
и accessibilityDecrement
. Вам не нужно переопределять свойство accessibilityTraits
, чтобы указать, что оно настраивается - UIPageControl
настраивается по умолчанию.
import UIKit
class AccessibleUIPageControl: UIPageControl {
override func accessibilityIncrement() {
self.currentPage += 1
self.sendActionsForControlEvents(.ValueChanged)
}
override func accessibilityDecrement() {
self.currentPage -= 1
self.sendActionsForControlEvents(.ValueChanged)
}
}
Затем в вашем контроллере представления вы можете прослушать ValueChanged и ответить соответствующим образом, чтобы показать содержимое для новой страницы:
//viewDidLoad:
self.pageControl.addTarget(self, action: "didChangePage", forControlEvents: .ValueChanged)
func didChangePage() {
let contentOffset: CGFloat = collectionView.frame.size.width * CGFloat(pageControl.currentPage)
collectionView.setContentOffset(CGPointMake(contentOffset, 0), animated: false)
}
Обратите внимание, что если вы не сделаете подкласс UIPageControl
, эта цель / действие будет по-прежнему вызываться, но индикатор точки текущей страницы не будет обновляться.