Ahh and I forgot to mention that if you want to just test this, use a timer on 
a 10 second delay because an announcement will not speak over the top of 
VoiceOver announcing that your build succeeded and application opened.

On Jul 20, 2014, at 5:02 PM, Tyler Thompson <tktpianostud...@gmail.com> wrote:

> Alright, solution time; this requires you to pass an NSWindow for mainWindow 
> (I just linked it using an IBOutlet)
> 
> -(void)speakString:(NSString *)stringToSpeak
> {
>     NSDictionary *announcementInfo = [[NSDictionary alloc] 
> initWithObjectsAndKeys:stringToSpeak, NSAccessibilityAnnouncementKey, 
> @"High", NSAccessibilityPriorityKey, nil];
>     NSAccessibilityPostNotificationWithUserInfo([mainWindow 
> firstResponder].accessibilityFocusedUIElement, 
> NSAccessibilityAnnouncementRequestedNotification, announcementInfo);
> }
> 
> 
> On Jul 20, 2014, at 4:08 PM, Alex Hall <mehg...@icloud.com> wrote:
> 
>> Oh, thanks. That's what I get for not reviewing the spelling. :) So, is 
>> there a quick way of getting the focused UI element, or does the app need to 
>> track it manually?
>> On Jul 20, 2014, at 5:51 PM, Tyler Thompson <tktpianostud...@gmail.com> 
>> wrote:
>> 
>>> the value: @"High" is the priority, as in low, medium, high. The second 
>>> parameter must be the UI element that currently has keyboard focus, this 
>>> can be a NSView object or subclass it can also be a custom object. If you 
>>> pass the object as nil you'll get no result. I don't know if it'll result 
>>> in a crash or not.
>>> 
>>> 
>>> On Jul 20, 2014, at 3:49 PM, Alex Hall <mehg...@icloud.com> wrote:
>>> 
>>>> This looks like what I've been searching for for a while now, thanks for 
>>>> sharing! What is the second parameter, though? Can it be nil,or does it 
>>>> need to be some NSView object or subclass? Also, in your demo, why provide 
>>>> the string "Hi" instead of using the string that was passed n? I just want 
>>>> to be sure I understand the process. Thanks again.
>>>> On Jul 20, 2014, at 5:08 PM, Tyler Thompson <tktpianostud...@gmail.com> 
>>>> wrote:
>>>> 
>>>>> Hello, this is a tidbit for those of you interested in developing for OSX,
>>>>> 
>>>>>   I have dug through tons of documentation on VoiceOver accessibility and 
>>>>> submitted several support tickets to apple for assistance and I finally 
>>>>> wrote this function I thought I'd share with everybody:
>>>>> 
>>>>> -(void)speakString:(NSString *)stringToSpeak 
>>>>> fromFocusedUIElement:(id)object
>>>>> {
>>>>>         NSDictionary *announcementInfo = [[NSDictionary alloc] 
>>>>> initWithObjectsAndKeys:stringToSpeak, NSAccessibilityAnnouncementKey, 
>>>>> @"High", NSAccessibilityPriorityKey, nil];
>>>>>         NSAccessibilityPostNotificationWithUserInfo(object, 
>>>>> NSAccessibilityAnnouncementRequestedNotification, announcementInfo);
>>>>> }
>>>>> 
>>>>> This could easily be expanded on, for instance we could include in this 
>>>>> function a way to tell the object that currently has keyboard focus to 
>>>>> assure that VoiceOver always speaks the string as opposed to you having 
>>>>> to figure it out. We could also add a NSAccessibilityLayoutChanged 
>>>>> notification to refresh the braille display (Although in some very 
>>>>> bizarre cases this causes VoiceOver to speak twice (once with the 
>>>>> announcement, once for the layout change). In other cases the 
>>>>> announcement interrupts the layout change notification or visa versa, I 
>>>>> have yet to figure that bit out. 
>>>>> 
>>>>> However I felt like this code snippet could do some people good, so there 
>>>>> it is.
>>>>> 
>>>>> -- 
>>>>> You received this message because you are subscribed to the Google Groups 
>>>>> "MacVisionaries" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>>>> email to macvisionaries+unsubscr...@googlegroups.com.
>>>>> To post to this group, send email to macvisionaries@googlegroups.com.
>>>>> Visit this group at http://groups.google.com/group/macvisionaries.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>> 
>>>> --
>>>> Have a great day,
>>>> Alex Hall
>>>> mehg...@icloud.com
>>>> 
>>>> 
>>>> -- 
>>>> You received this message because you are subscribed to the Google Groups 
>>>> "MacVisionaries" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>>> email to macvisionaries+unsubscr...@googlegroups.com.
>>>> To post to this group, send email to macvisionaries@googlegroups.com.
>>>> Visit this group at http://groups.google.com/group/macvisionaries.
>>>> For more options, visit https://groups.google.com/d/optout.
>>> 
>>> 
>>> -- 
>>> You received this message because you are subscribed to the Google Groups 
>>> "MacVisionaries" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>> email to macvisionaries+unsubscr...@googlegroups.com.
>>> To post to this group, send email to macvisionaries@googlegroups.com.
>>> Visit this group at http://groups.google.com/group/macvisionaries.
>>> For more options, visit https://groups.google.com/d/optout.
>> 
>> --
>> Have a great day,
>> Alex Hall
>> mehg...@icloud.com
>> 
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "MacVisionaries" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to macvisionaries+unsubscr...@googlegroups.com.
>> To post to this group, send email to macvisionaries@googlegroups.com.
>> Visit this group at http://groups.google.com/group/macvisionaries.
>> For more options, visit https://groups.google.com/d/optout.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"MacVisionaries" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to macvisionaries+unsubscr...@googlegroups.com.
To post to this group, send email to macvisionaries@googlegroups.com.
Visit this group at http://groups.google.com/group/macvisionaries.
For more options, visit https://groups.google.com/d/optout.

Reply via email to