2012-01-13 17 views
5

Tôi có UIView có chứa một số điều khiển (ví dụ: nút, nhãn, v.v.). Tôi che phủ chế độ xem này lên chế độ xem khác (sử dụng addSubview). Nếu người dùng có VoiceOver, anh ấy có thể vuốt sang trái và phải để chọn các điều khiển. Tuy nhiên, nếu tôi ẩn chế độ xem để các điều khiển không còn hiển thị nữa, người dùng vẫn có thể vuốt và chọn chúng (mặc dù chúng không thực sự hoạt động). Vì điều này rất khó hiểu đối với người dùng khiếm thị, tôi muốn giữ điều này xảy ra. Tôi thậm chí đã cố gắng loại bỏ xem có chứa các điều khiển (bằng cách sử dụng removeFromSuperview) nhưng người dùng có thể VẪN swipe để chọn chúng (mặc dù các hộp nhỏ mà nổi bật chúng không còn ở các vị trí chính xác). Nó giống như VoiceOver đã ghi nhớ rằng những điều khiển đó đã từng ở đó và sẽ nhớ mãi mãi hơn.Điều khiển VoiceOver có thể chọn khi ẩn

Tôi cũng tìm thấy thuộc tính 'accessibilityElementsHidden' và tôi đã thử đặt thành YES trên chế độ xem có chứa các điều khiển khi bị ẩn, nhưng điều đó dường như không hoạt động.

Đây có phải là lỗi trong VoiceOver hay tôi đang thiếu thứ gì đó? Có cách giải quyết nào không?

Cảm ơn.

+0

Tôi có chính xác vấn đề ngược lại! Nếu chế độ xem lớp phủ của tôi (chứa các nút) là trong suốt (alpha = 0,0) thì không tìm thấy các bản xem trước (nút, v.v.) của nó bằng VoiceOver. Trường hợp của tôi, tôi muốn có những điều khiển có thể truy cập (qua VoiceOver) ngay cả khi lớp phủ bị ẩn - nhưng tôi không thể !!! –

Trả lời

10

Phần "đã ghi nhớ" khiến tôi nghĩ rằng bạn không làm điều gì đó như UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil) sau khi xóa các bản xem trước.

+2

Vâng, đó là chính xác những gì tôi đã mất tích. Cảm ơn nhiều! Nhân tiện tôi đã hỏi câu hỏi này trên diễn đàn Apple Development và không nhận được câu trả lời nào. Tôi luôn luôn tìm kiếm nhiều người hiểu biết hơn về stackoverflow. –

+0

Tôi cố gắng trả lời những thứ ở đó, chỉ là vấn đề cơ hội. BTW, nếu bạn có thể yêu cầu iOS 5, bạn có thể có chế độ xem VoiceOver-mode, có thể giúp cuộc sống trở nên dễ dàng hơn * LOT *. –

+0

Cảm ơn mẹo. Tôi đã thấy điều đó, nhưng tôi muốn có thể hỗ trợ iPod 2/3 có vẻ như có phiên bản tối đa mà bạn có thể cài đặt (tôi cho rằng tôi luôn có thể kiểm tra phiên bản hệ điều hành và tạo hoặc không tạo iOS 5 cuộc gọi tương ứng). –

7

Các tài liệu cho "accessibilityElementsHidden" khẳng định:

Một giá trị logic Boolean cho biết các yếu tố khả năng tiếp cận chứa bên trong yếu tố khả năng tiếp cận này là ẩn. ..... Giá trị mặc định là cho thuộc tính này là NO. Bạn có thể sử dụng thuộc tính này để ẩn các chế độ xem được bao phủ bởi sự xuất hiện của chế độ xem mới. Trong trường hợp này, các chế độ xem ẩn có thể vẫn hiển thị trên màn hình nhưng chúng không phải là trọng tâm của các hành động của người dùng.

Bạn cũng có thể sử dụng thuộc tính này để ẩn chế độ xem thoáng qua Người dùng VoiceOver không cần thông báo. Ví dụ: VoiceOver không cần mô tả chế độ xem mờ xuất hiện khi người dùng điều chỉnh âm lượng trên thiết bị của họ, vì phản hồi bằng âm thanh của hành động này là đủ.

Vì vậy, dựa trên điều này, để các bài đánh giá này bị VoiceOver bỏ qua, bạn thực sự muốn đặt thành "CÓ" trên chế độ xem gốc.

+0

Cảm ơn bạn đã phản hồi. Tôi đã nhầm lẫn trước và tôi đã đặt nó thành YES. Vấn đề dường như là tôi đã không gọi UIAccessibilityPostNotification sau khi tôi gỡ bỏ các cửa sổ. –