If this may be helpful, I found this in Programming iOS 5 by Matt Neuburg, p. 467:
userInteractionEnabled
If set to NO, this view (along with its subviews) is excluded from
receiving touches. Touches on this view or one of its subviews "fall
through" to a view behind it.
Further more, Apple's Event Handling Guide for iOS says:
The window object uses hit-testing and the responder chain to find the
view to receive the touch event. In hit-testing, a window calls
hitTest:withEvent: on the top-most view of the view hierarchy; this
method proceeds by recursively calling pointInside:withEvent: on each
view in the view hierarchy that returns YES, proceeding down the
hierarchy until it finds the subview within whose bounds the touch
took place. That view becomes the hit-test view.
and Programming iOS 5 by Matt Neuburg, p.485 mentioned that if a view is marked userInteractionEnabled
as NO
, or hidden
as YES
, or opacity is close to 0, then the view and its subview will not be traversed by HitTest
(and therefore not considered for any touch).
Updated: I suppose it also works this way if we think about parent-child situation in other scenario. For example, in HTML, if there is a div
and there are children all under this div
, and now this div
is set to display: none
, then it makes sense that all the children are not displayed as well. So if a parent is set to not interact with the user, it also makes sense that the children do not interact with the user as well.