mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-30 22:12:42 +08:00
Add ReactCompoundViewGroup interface that allows having both virtual and non-virtual (View) children
Summary: In React, ReactCompoundView is supposed to be implemented by a View, but there is no ViewGroup counterpart that allows mixing virual nodes and non-virtual ones (Views) in the same parent. This is needed because TouchTargetHelper always considers child Views when looking for touch target before falling back to View/ReactCompoundView. This works incorrectly for e.g. layout-only / flattened nodes. ReactCompoundViewGroup allow intercepting touch event before it is dispatched to its children. In that sense, ReactCompoundView.reactTagForTouch() is like View.onTouchEvent() whereas ReactCompoundViewGroup.interceptsTouchEvent() is like ViewGroup.onInterceptTouchEvent(). Differential Revision: D3018028 fb-gh-sync-id: d2c70a55afb9ce9823275e7483d72e0ebedf52e4 shipit-source-id: d2c70a55afb9ce9823275e7483d72e0ebedf52e4
This commit is contained in:
committed by
Facebook Github Bot 3
parent
d0a26a75fb
commit
aae521f57e
@@ -209,6 +209,11 @@ public class TouchTargetHelper {
|
||||
|
||||
} else if (pointerEvents == PointerEvents.AUTO) {
|
||||
// Either this view or one of its children is the target
|
||||
if (view instanceof ReactCompoundViewGroup) {
|
||||
if (((ReactCompoundViewGroup) view).interceptsTouchEvent(eventCoords[0], eventCoords[1])) {
|
||||
return view;
|
||||
}
|
||||
}
|
||||
if (view instanceof ViewGroup) {
|
||||
return findTouchTargetView(eventCoords, (ViewGroup) view);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user