How do Responder Chain Works in IPhone? What are the “next responders”?

后端 未结 5 1468
难免孤独
难免孤独 2021-01-31 09:01

This is what the documentation says:

If the first responder [to an event or action message] cannot handle an event or action message, it forwards it to th

5条回答
  •  被撕碎了的回忆
    2021-01-31 09:47

    The First Responder is a very specific concept in Cocoa. The only time iOS decides to set the First Responder is when a text field gets focus. At all other times you must explicitly control which object you want to be the first responder (see -canBecomeFirstResponder, -becomeFirstResponder).

    There is no such thing as a second responder.

    All responders have a NextResponder, (which can be nil). This means that starting from any responder there may be (but may not be) an arbitrarily length chain of responders (responder -> nextResponder -> nextResponder -> etc) along which events are passed until they are handled.

    There is a default chain which can be view -> superview -> superview but might also include UIViewControllers, UIWindows, UIWindowControllers, UIApplication and more, so it heavily depends on your object hierarchy (not just your view hierarchy - so no, you can't say nextResponder is always the parent view). On OSX 10.6 the default chain is even different for different types of events and actions and can even include your app delegate, which may or may not be a responder, i'm not sure if this is the case in iOS tho.

    The default chain is only the default tho, so after you have managed the First Responder it is down to you to insert, remove and append items to it's responder chain to achieve your desired aim.

    The responder chain is quite important and complicated, you should take time to read the Apple docs about it.

提交回复
热议问题