>> On 2014/09/08, at 3:16, Kyle Sluder <k...@ksluder.com> wrote:
>>
>> On Sep 7, 2014, at 9:24 AM, dangerwillrobinsondan...@gmail.com wrote:
>>
>> Hi all
>>
>> I just spent a bit of time poking around the responder chain and nil
>> targeted actions.
>> I built a view controller and a view hierarchy with controls that should be
>> configurable.
>> When instantiating the view controller the interface allows configuring the
>> action SEL of the controls. Reuse is the goal of course.
>> I know 10.10 changes things greatly for view controllers. But on 10.9 that's
>> not there.
>>
>> Anyway, I need to insert the view controller into the responder chain
>> between its top level view and that view's superview.
>> That wasn't too bad. Implement the missing reference to the vc in a view
>> subclass and give the vc a callback when the view is in place.
>>
>> But what I found while tinkering is that for non-document based apps from a
>> vanilla project template there was no next responder for the window or the
>> NSApplication instance.
>> I had a method in the app delegate that I was trying to reach via nil
>> targeted action. It couldn't get there.
>> So I set the window nextResponder to the app and the app to the app
>> delegate. I also made the app delegate an NSResponder subclass.
>>
>> It feels like overkill.
>> Am I missing something simple?
>
> IIRC, the window is not supposed to have a nextResponder. Conceptually, the
> next responder of a window is its delegate, and the next responder of an
> application is *its* delegate, but there is no requirement that these objects
> are instances of subclasses of NSResponder. Therefore the responder chain
> mechanism manually jumps from the window to its delegate, then to the
> application, and finally to the app’s delegate. (It also inserts window
> controllers as well as the shared NSDocumentController instance if one has
> been created.)
>
> If the message never reached your app delegate, I suspect you failed to patch
> the view controller’s nextResponder in correctly.
>
> --Kyle Sluder
I figured as much. It seemed like none of that should be necessary normally.
But why would it be able to send standard responder messages like the orderOut:
action message to nil and reach the window?
I must be inserting it wrongly into the responder chain.
The docs describe exactly what everyone said here.
My app delegate does implement the selector.
I even exposed it in the header.
It is an action message.
So without doing anything special I should be able to send it right up the
chain and reach the app delegate.
The docs even state ( in the Cocoa Event Handling Guide, the others gloss over
this) that a window delegate and app delegate do not need to be NSResponder
descendants.
I will look at this with an even simpler test app and see what's going on.
I think you're right that I borked the responder chain insertion.
Without inserting the controller into the responder chain, should the view
follow the normal behavior of having its superview has nextResponder?
_______________________________________________
Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to arch...@mail-archive.com