Remove FixedTouchableHighlight
, fix Android press issues (#3214)
* rm `FixedTouchableHighlight` * adjust delay for highlight * remove unnecessary background colors to support background ripple
This commit is contained in:
parent
6279c5cf31
commit
4f8381678d
7 changed files with 11 additions and 76 deletions
|
@ -1,42 +0,0 @@
|
|||
// FixedTouchableHighlight.tsx
|
||||
import React, {ComponentProps, useRef} from 'react'
|
||||
import {GestureResponderEvent, TouchableHighlight} from 'react-native'
|
||||
|
||||
type Position = {pageX: number; pageY: number}
|
||||
|
||||
export default function FixedTouchableHighlight({
|
||||
onPress,
|
||||
onPressIn,
|
||||
...props
|
||||
}: ComponentProps<typeof TouchableHighlight>) {
|
||||
const _touchActivatePositionRef = useRef<Position | null>(null)
|
||||
|
||||
function _onPressIn(e: GestureResponderEvent) {
|
||||
const {pageX, pageY} = e.nativeEvent
|
||||
|
||||
_touchActivatePositionRef.current = {
|
||||
pageX,
|
||||
pageY,
|
||||
}
|
||||
|
||||
onPressIn?.(e)
|
||||
}
|
||||
|
||||
function _onPress(e: GestureResponderEvent) {
|
||||
const {pageX, pageY} = e.nativeEvent
|
||||
|
||||
const absX = Math.abs(_touchActivatePositionRef.current?.pageX! - pageX)
|
||||
const absY = Math.abs(_touchActivatePositionRef.current?.pageY! - pageY)
|
||||
|
||||
const dragged = absX > 2 || absY > 2
|
||||
if (!dragged) {
|
||||
onPress?.(e)
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<TouchableHighlight onPressIn={_onPressIn} onPress={_onPress} {...props}>
|
||||
{props.children}
|
||||
</TouchableHighlight>
|
||||
)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue