辅助功能:在更新UIAlertView的消息时,Voice over reads的文本不会更改?

时间:2013-01-24 08:34:30

标签: ios accessibility uialertview

请参阅以下代码:

UIAlertView *progressAlertView = [[UIAlertView alloc] 
                                  initWithTitle:@"Title"
                                  message:@"Message"  
                                  delegate:self 
                                  cancelButtonTitle:@"Cancel"
                                  otherButtonTitles:nil];


progressAlertView.message=@"Hello, I am the new one";

语音总是读取“消息”并且永远不会读取第二行“你好,我是新的”中设置的新消息字符串。无法更改UIAlertView的bodyTextLabel控件/子视图的此辅助功能标签。

知道如何让UIAlertView在分配后更改其可访问性标签吗?

谢谢,

-Shilpi

3 个答案:

答案 0 :(得分:1)

您可以使用accessibilityTraits作为UIAccessibilityTraitUpdatesFrequently来读取更新的消息。 它的工作原理如下:

alertObj.accessibilityTraits =   UIAccessibilityTraitUpdatesFrequently;

由于

答案 1 :(得分:0)

使用这种方式设置 UIAlertView

的消息
UIAlertView *progressAlertView = [[UIAlertView alloc] 
                                  initWithTitle:@"Title"
                                  message:@"Message"  
                                  delegate:self 
                                  cancelButtonTitle:@"Cancel"
                                  otherButtonTitles:nil];


[alertView setMessage:@"Hello, I am the new one"];
[alertView show];

有关UIAlertView的更多信息,请参阅此处 http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAlertView_Class/UIAlertView/UIAlertView.html

答案 2 :(得分:0)

您可以更改UIAlertView的子视图以更改单一属性,例如辅助功能标签:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Test"
                                                message:@"Message"
                                               delegate:nil
                                      cancelButtonTitle:@"Ok"
                                      otherButtonTitles:nil];

// In a standard UIAlertView there are 2 UILabels and some buttons
// The UILabel with the message is always the 2nd object in the array
NSArray *subviews = alert.subviews;
UILabel *messageLabel = [subviews objectAtIndex:1];
[messageLabel setAccessibilityLabel:@"Some other text"];

使用此代码,您只需更改辅助功能标签,以便VoiceOver读取另一个文本,但会显示旧文本。

在您的情况下,您应将可访问性标签设置为您想要设置UIAlertView的消息的相同标签。