mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
aae521f57e
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
25 lines
973 B
Java
25 lines
973 B
Java
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
package com.facebook.react.uimanager;
|
|
|
|
/**
|
|
* This interface should be implemented be native ViewGroup subclasses that can represent more
|
|
* than a single react node. In that case, virtual and non-virtual (mapping to a View) elements
|
|
* can overlap, and TouchTargetHelper may incorrectly dispatch touch event to a wrong element
|
|
* because it priorities children over parents.
|
|
*/
|
|
public interface ReactCompoundViewGroup extends ReactCompoundView {
|
|
/**
|
|
* Returns true if react node responsible for the touch even is flattened into this ViewGroup.
|
|
* Use reactTagForTouch() to get its tag.
|
|
*/
|
|
boolean interceptsTouchEvent(float touchX, float touchY);
|
|
}
|