2012-01-12 25 views
15

Chúng tôi sử dụng KIF để kiểm tra chức năng của mình và sử dụng nhãn trợ năng của các phần tử để xác định nơi gửi các sự kiện. Tôi hiện đang cố gắng để kiểm tra hành vi của một UISegmentedControl, nhưng để làm như vậy tôi cần phải thiết lập nhãn khả năng truy cập khác nhau cho các phân đoạn khác nhau của kiểm soát. Làm cách nào để đặt nhãn accesibility cho một phân đoạn cụ thể?Làm cách nào để đặt nhãn accesibility cho một phân đoạn cụ thể của UISegmentedControl?

Trả lời

10

Tôi chỉ mới bắt đầu với KIF, vì vậy tôi chưa thử nghiệm điều này, nhưng nó có thể đáng để thử. Tôi chắc rằng tôi sẽ sớm có cùng một vấn đề, vì vậy tôi muốn được lắng nghe nếu nó hoạt động.

Thứ nhất, UIAccessibility Protocol Reference có một lưu ý dưới accessibilityLabel nói rằng:

"Nếu bạn cung cấp đối tượng UIImage để hiển thị trong một UISegmentedControl, bạn có thể thiết lập thuộc tính này trên mỗi hình ảnh để đảm bảo rằng các phân đoạn là đúng cách tiếp cận. "

Vì vậy, tôi tự hỏi bạn có thể đặt AccessibilityLabel trên mỗi đối tượng NSString không và có thể sử dụng để truy cập từng phân đoạn bằng KIF. Khi bắt đầu, bạn có thể thử tạo một vài chuỗi, đặt nhãn trợ năng của chúng và sử dụng [[UISegmentedControl alloc] initWithItems: myStringArray]; để phổ biến nó.

Vui lòng cập nhật cho chúng tôi về tiến trình của bạn. Tôi muốn biết cách này hoạt động như thế nào

+0

Không, điều này không hoạt động. Bạn phải sử dụng câu trả lời được chấp nhận để tùy chỉnh những chương trình này, và nó là xấu xí. – Josh

+1

Tính năng này hoạt động đối với tôi, ít nhất là iOS 5.1. Tôi chưa thử nghiệm lại. Nếu tôi đặt 'accessibilityLabel' của hình ảnh và sau đó sử dụng hình ảnh trong một' UISegmentedControl', nó hoạt động như mong đợi. – rmaddy

+1

Đặt trợ năngLabel trên các đối tượng 'NSString' ... mind = blown –

8

Mỗi đoạn của UISegmentedControlUISegment thể hiện lớp con từ UIImageView. Bạn có thể truy cập các trường hợp đó bằng cách subviews thuộc tính của UISegmentedControl và cố gắng thêm khả năng truy cập cho chúng theo lập trình.

+0

Tôi đã thử nó, nó không làm việc cho tôi. Tôi đã thử một cách khác, nó hoạt động cho tôi bây giờ. [[segmentedControl imageForSegmentAtIndex: 0] setAccessibilityLabel: @ "Vũ khí"]; – UnchartedWorks

14

Như Vertex nói,

obj-c

[[[self.segmentOutlet subviews] objectAtIndex:3] setAccessibilityLabel:@"GENERAL_SEGMENT"]; 

nhanh chóng

self.segmentOutlet.subviews[3].accessibilityLabel = "GENERAL_SEGMENT" 

một số lời khuyên để bạn không phát điên như tôi đã làm:

  1. Để cuộn ở chế độ trợ năng, hãy vuốt ba ngón tay
  2. Chỉ mục của các đoạn này ngược lại bạn mong đợi, tức là phân đoạn xa nhất bên phải là chỉ mục thứ 0 và xa nhất bên trái là chỉ mục thứ n trong đó n là số phần tử trong UISegmentControl
+1

Làm thế nào điều này có thể xảy ra trong Swift? – SwingerDinger

+1

Tôi đã thêm một ví dụ nhanh. Tôi đã không thử nó nhưng trình biên dịch chấp nhận cú pháp. Xin lỗi vì trả lời trễ @SwingerDinger – anders

+0

Cảm ơn rất nhiều anh chàng! – satheeshwaran

8

Đây là câu hỏi cũ nhưng chỉ trong trường hợp bất kỳ ai khác gặp phải vấn đề này, tôi thấy rằng các phân đoạn tự động có nhãn trợ năng được chỉ định làm văn bản của chúng. Vì vậy, nếu hai tùy chọn đã được thêm vào Tùy chọn 1 và Tùy chọn 2. Một cuộc gọi đến

[tester tapViewWithAccessibilityLabel:@"Option 2"]; 

đã chọn thành công phân đoạn đó.

+1

Nó không hoạt động và tôi đã kiểm tra bằng Trình kiểm tra khả năng truy cập và không có nhãn nào trên chúng – Caipivara

+0

OMG đây phải là câu trả lời được chấp nhận, rất đơn giản! Hoạt động cho tôi trên iOS 8. –

+0

Hoạt động, mặc dù tôi gặp sự cố: một trong các tab của tôi có cùng nội dung giống như một phân đoạn. Do đó cả hai đều có cùng nhãn trợ năng. – user3099609

1

một lựa chọn nếu không sẵn sàng để thiết lập nhãn sự tiếp cận có thể được tính toán poistion của từng phần phân đoạn và sử dụng

[tester tapScreenAtPoint:segementPosition]; 

để kích hoạt các hành động

4

Đây là một câu hỏi cũ nhưng chỉ trong trường hợp bất cứ ai khác chạy lên chống lại điều này tôi thấy rằng các phân đoạn tự động có nhãn trợ năng được chỉ định làm văn bản của chúng.

Ngoài câu trả lời của Stuart, tôi thấy nó thực sự hữu ích khi viết các trường hợp kiểm tra để bật 'Trình kiểm tra truy cập' trên Trình mô phỏng (Cài đặt -> Chung -> Trợ năng -> Trình kiểm tra trợ năng). Bạn sẽ ngạc nhiên khi có bao nhiêu yếu tố đã có nhãn trợ năng được bao gồm, như trong các phần tử giao diện người dùng iOS chuẩn hoặc thậm chí là các khung bên thứ ba.

Facebook log in button with accessibility label

Note: Cử chỉ bây giờ sẽ khác nhau - Bấm để xem thông tin tiếp cận, chạm đúp để chọn. Giảm thiểu cửa sổ Trình kiểm tra khả năng truy cập (bằng cách nhấn vào nút X) sẽ trả về các cử chỉ trở lại bình thường.

+0

Đề xuất tốt! – anders

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