Skip to content

Commit

Permalink
feat(tcr): 手势事件的event参数的转化
Browse files Browse the repository at this point in the history
  • Loading branch information
Manjiz committed Jun 29, 2018
1 parent 104f58e commit 1d52f96
Showing 1 changed file with 45 additions and 6 deletions.
51 changes: 45 additions & 6 deletions packages/taro-components-rn/src/components/_Clickable/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,31 +50,70 @@ export default function (WrappedComponent: React.ComponentType<*>) {
},
onPanResponderGrant: (evt, gestureState) => {
const { onTouchstart } = this.props
onTouchstart && onTouchstart()
onTouchstart && onTouchstart(this.getWxAppEvent(evt))
this.startTimestamp = evt.nativeEvent.timestamp
},
onPanResponderMove: (evt, gestureState) => {
const { onTouchmove } = this.props
onTouchmove && onTouchmove()
onTouchmove && onTouchmove(this.getWxAppEvent(evt))
},
onPanResponderTerminationRequest: (evt, gestureState) => true,
onPanResponderRelease: (evt, gestureState) => {
const { onClick, onLongPress, onTouchend } = this.props
onTouchend && onTouchend()
onTouchend && onTouchend(this.getWxAppEvent(evt))
const endTimestamp = evt.nativeEvent.timestamp
const gapTime = endTimestamp - this.startTimestamp
if (gapTime <= 350) {
onClick && onClick()
onClick && onClick(this.getWxAppEvent(evt))
} else {
onLongPress && onLongPress()
onLongPress && onLongPress(this.getWxAppEvent(evt))
}
},
onPanResponderTerminate: (evt, gestureState) => {
const { onTouchcancel } = this.props
onTouchcancel && onTouchcancel()
onTouchcancel && onTouchcancel(this.getWxAppEvent(evt))
},
})

getWxAppEvent = (event: Object) => {
const nativeEvent = event.nativeEvent
const { timestamp, target, pageX, pageY, touches = [], changedTouches = [] } = nativeEvent
return {
type: 'tap',
timeStamp: timestamp,
target: {
id: target,
dataset: {}
},
currentTarget: {
id: target,
dataset: {}
},
detail: {
x: pageX,
y: pageY
},
touches: touches.map((item) => {
return {
identifier: item.identifier,
pageX: item.pageX,
pageY: item.pageY,
clientX: item.locationX,
clientY: item.locationY
}
}),
changedTouches: changedTouches.map((item) => {
return {
identifier: item.identifier,
pageX: item.pageX,
pageY: item.pageY,
clientX: item.locationX,
clientY: item.locationY
}
})
}
}

render () {
const {
style,
Expand Down

0 comments on commit 1d52f96

Please sign in to comment.