在跳板上使用語音功能時,如果選擇屏幕底部的UIPageControl,VoiceOver會宣佈類似「第1頁,共5頁。可調節」的內容。用戶可以上下滑動來改變頁面。UIPageControl和VoiceOver /輔助功能
在我的應用程序中,我沒有看到「可調整」部分,並且頁面無法通過刷卡進行更改。
任何想法如何解決這個問題?它顯然殺死了應用程序的可用性。
在跳板上使用語音功能時,如果選擇屏幕底部的UIPageControl,VoiceOver會宣佈類似「第1頁,共5頁。可調節」的內容。用戶可以上下滑動來改變頁面。UIPageControl和VoiceOver /輔助功能
在我的應用程序中,我沒有看到「可調整」部分,並且頁面無法通過刷卡進行更改。
任何想法如何解決這個問題?它顯然殺死了應用程序的可用性。
我已將子類別UIPageControl
和覆蓋-accessibilityTraits
獲得者返回UIAccessibilityTraitAdjustable
獲取Voice Over以讀取「可調整」。
要添加操作:實施UIAccessibilityAction
類別中指定的-accessibilityIncrement
和-accessibilityDecrement
方法。
由於我的頁面對UIControlEventValueChanged
事件做出了響應,因此我確保也爲此事件發送操作。
示例代碼
@interface AccessibleUIPageControl : UIPageControl
@end
@implementation AccessibleUIPageControl
- (UIAccessibilityTraits)accessibilityTraits
{
return super.accessibilityTraits | UIAccessibilityTraitAdjustable;
}
- (void)accessibilityIncrement
{
self.currentPage = self.currentPage + 1;
[self sendActionsForControlEvents:UIControlEventValueChanged];
}
- (void)accessibilityDecrement
{
self.currentPage = self.currentPage - 1;
[self sendActionsForControlEvents:UIControlEventValueChanged];
}
@end
通常,你[結合特性](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAccessibility_Protocol/#//apple_ref/occ/instp/NSObject/accessibilityTraits)從'super'與期望的特徵,如'return super.accessibilityTraits | UIAccessibilityTraitAdjustable'。 – Adrian 2015-05-18 18:54:23
如果你支持的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
這個目標/行動將仍然被調用,但當前頁面點指示符不會更新。
嗨,我與頁面控制的問題是,我無法讓它增加或減少計數器時,它的焦點。我的目標是iOS 10及以上平臺。任何方式來幫助我?謝謝! – 2018-02-26 20:48:55
@KarthikKannan對不起,我自己沒有看到這個問題 – Joey 2018-02-26 21:09:24
你是用InterfaceBuilder或編程方式做這個嗎?這聽起來像是缺少特徵[UIAccessibilityTraitAdjustible](http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAccessibilityAction_Protocol/Introduction/Introduction.html) - 您是直接使用Page Control還是使用了Page Control另一種知道如何管理它的觀點?) – 2012-04-20 05:37:05