2012-07-24 33 views
7

Giọng của Apple phát âm sai tiêu đề của một trong các chế độ xem của tôi, nằm trong Bộ điều khiển UINavigation.Khả năng truy cập iOS - Làm cách nào để bạn đặt nhãn trợ năng cho tiêu đề của UINavigationBar?

Trong các phần khác của ứng dụng tôi đã thêm nhãn trợ năng tùy chỉnh để giúp phát âm chính xác tên công ty. Làm cách nào tôi có thể đặt nhãn trợ năng của UINavigationBar?

Trả lời

10

tôi không thể thêm một nhãn năng tiếp cận, nhưng tôi tìm thấy một workaround:.

tôi thay thế của navigationItem tiêu đề View với một UILabel có khả năng tiếp cận thiết lập.

UILabel *titleLabel = [[UILabel alloc] init]; 
titleLabel.text = @"myTitle"; 
[titleLabel setAccessibilityLabel:@"myCustomAccessiblityLabel"]; 
[titleLabel setFont:[UIFont boldSystemFontOfSize:20.0]]; 
[titleLabel setBackgroundColor:[UIColor clearColor]]; 
[titleLabel setTextColor:[UIColor whiteColor]]; 
[titleLabel sizeToFit]; 
self.navigationItem.titleView = titleLabel; 

Tôi không chắc chắn lý do tại sao đặt nhãn trợ năng không hoạt động, nhưng mã trên phù hợp với nhu cầu của tôi.

+2

Cảm ơn bạn đã đăng cách giải quyết của mình! Vấn đề với UINavigationBar có thể đáng để nộp đơn với Apple. Họ là khá tốt về địa chỉ báo cáo lỗi liên quan đến khả năng tiếp cận (bao gồm cả vấn đề UIBarButtonItem tôi đã có mà tôi đã đề cập ở trên). – Turix

+0

Ý tưởng tuyệt vời! – Husam

0

Kể từ khi UINavigationBar kế thừa từ UIView, bạn sẽ có thể đặt thuộc tính accessibilityLabel. Thử: yourUINavigationBar.accessibilityLabel = @"title";.

Ngoài ra, bạn có thể cần đảm bảo rằng nó được đánh dấu là phần tử trợ năng với yourUINavigationBar.isAccessibilityElement = YES; (và không nằm trong chế độ xem khác cũng được đánh dấu là phần tử trợ năng). (Tôi đoán bit cuối cùng này có thể là vấn đề, vì có vẻ như bạn đã biết về nhãn trợ năng. Bạn có thể sử dụng Trình kiểm tra khả năng truy cập trong trình mô phỏng để xem trường hợp này có nhìn vào hộp xung quanh phần tử hay không khai thác nó để xem nếu nó xung quanh một cái gì đó lớn hơn thanh navigator)

+0

Điều đó không hiệu quả đối với tôi, tôi sợ. Tôi đặt isAccessibilityElement = YES và tiêu đề không nằm trong một chế độ xem khác được đánh dấu là phần tử trợ năng. –

+0

@RobertWagstaff Xin lỗi! Tôi thú nhận tôi đã không bao giờ có vấn đề này, nhưng nó xảy ra với tôi rằng có lẽ bạn cần phải làm điều này cho tài sản 'titleView' của đối tượng' UINavigationItem' thay thế. (BTW, điều này có vẻ tương tự như một vấn đề tôi đã có với khả năng truy cập 'UIBarButtonItem' trong quá khứ mà nó đã không cư xử như" bình thường "UIView liên quan đến công cụ.) – Turix

+0

vẫn không có may mắn, tôi đã cố gắng: self.navigationItem. title = @ "myTitle"; [self.navigationItem.titleView setIsAccessibilityElement: YES]; [self.navigationItem.titleView setAccessibilityLabel: @ "AccessibilityTitle"]; bên trong của loadView –

14

Tính năng này hoạt động trong iOS 8.2. Trong viewDidLoad:

self.navigationItem.accessibilityLabel = @"My accessible label"; 

Khi một bộ điều khiển chuyển hướng chuyển tới bộ điều khiển xem, accessibilityLabel được đọc thay vì bộ điều khiển xem title.

+0

Đã hoạt động đối với tôi trên iOS 7.1.2. Đây là câu trả lời hoàn hảo và nên được chọn là câu trả lời chính xác. – Vlad

+0

Câu trả lời hay nhất, hoạt động trên iOS9. – BollMose

+0

Đồng ý, câu trả lời hay nhất. – Tyten

Các vấn đề liên quan