Nếu bạn đang hỗ trợ iOS 9 và mới hơn, hành vi này ngay bây giờ là tiêu chuẩn - không cần xử lý đặc biệt theo yêu cầu.
Nếu bạn đang hỗ trợ iOS 8 trở xuống, lớp con UIPageControl
và ghi đè accessibilityIncrement
và accessibilityDecrement
. Bạn không cần ghi đè thuộc tính accessibilityTraits
để cho biết nó có thể điều chỉnh - UIPageControl
được điều chỉnh theo mặc định.
import UIKit
class AccessibleUIPageControl: UIPageControl {
override func accessibilityIncrement() {
self.currentPage += 1
self.sendActionsForControlEvents(.ValueChanged)
}
override func accessibilityDecrement() {
self.currentPage -= 1
self.sendActionsForControlEvents(.ValueChanged)
}
}
Sau đó, trong điều khiển điểm của bạn, bạn có thể nghe cho ValueChanged và đáp ứng một cách thích hợp để hiển thị các nội dung cho trang mới:
//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)
}
Lưu ý rằng nếu bạn không phân lớp UIPageControl
mục tiêu này/hành động sẽ vẫn được gọi nhưng chỉ báo chấm trang hiện tại sẽ không cập nhật.
Bạn có đang thực hiện việc này trong InterfaceBuilder hoặc theo chương trình không? Có vẻ như nó thiếu đặc điểm [UIAccessibilityTraitAdjustible] (http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAccessibilityAction_Protocol/Introduction/Introduction.html) - bạn đang sử dụng Điều khiển trang trực tiếp hay bên trong một góc nhìn khác biết cách quản lý nó?) –