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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]>
>>> 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 [email protected].
>>>> To post to this group, send email to [email protected].
>>>> 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
>>> [email protected]
>>>
>>>
>>> --
>>> 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 [email protected].
>>> To post to this group, send email to [email protected].
>>> 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 [email protected].
>> To post to this group, send email to [email protected].
>> 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
> [email protected]
>
>
> --
> 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 [email protected].
> To post to this group, send email to [email protected].
> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/macvisionaries.
For more options, visit https://groups.google.com/d/optout.