mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
Merge pull request #8224 from NativeScript/niliev/long-press
feat: add longPress state argument w/ UILongPressGestureRecognizer (iOS)
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
// Definitions.
|
// Definitions.
|
||||||
import { GestureEventData, SwipeGestureEventData, PanGestureEventData, RotationGestureEventData } from ".";
|
import { GestureEventData, SwipeGestureEventData, PanGestureEventData, RotationGestureEventData, GestureEventDataWithState } from ".";
|
||||||
import { View, EventData } from "../core/view";
|
import { View, EventData } from "../core/view";
|
||||||
|
|
||||||
// Types.
|
// Types.
|
||||||
@@ -62,7 +62,7 @@ function initializeTapAndDoubleTapGestureListener() {
|
|||||||
|
|
||||||
public onLongPress(motionEvent: android.view.MotionEvent): void {
|
public onLongPress(motionEvent: android.view.MotionEvent): void {
|
||||||
if (this._type & GestureTypes.longPress) {
|
if (this._type & GestureTypes.longPress) {
|
||||||
const args = _getArgs(GestureTypes.longPress, this._target, motionEvent);
|
const args = _getLongPressArgs(GestureTypes.longPress, this._target, GestureStateTypes.began, motionEvent);
|
||||||
_executeCallback(this._observer, args);
|
_executeCallback(this._observer, args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -383,6 +383,18 @@ function _getArgs(type: GestureTypes, view: View, e: android.view.MotionEvent):
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _getLongPressArgs(type: GestureTypes, view: View, state: GestureStateTypes, e: android.view.MotionEvent): GestureEventDataWithState {
|
||||||
|
return <GestureEventDataWithState>{
|
||||||
|
type: type,
|
||||||
|
view: view,
|
||||||
|
android: e,
|
||||||
|
ios: undefined,
|
||||||
|
object: view,
|
||||||
|
eventName: toString(type),
|
||||||
|
state: state
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function _getSwipeArgs(direction: SwipeDirection, view: View,
|
function _getSwipeArgs(direction: SwipeDirection, view: View,
|
||||||
initialEvent: android.view.MotionEvent, currentEvent: android.view.MotionEvent): SwipeGestureEventData {
|
initialEvent: android.view.MotionEvent, currentEvent: android.view.MotionEvent): SwipeGestureEventData {
|
||||||
return <SwipeGestureEventData>{
|
return <SwipeGestureEventData>{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// Definitions.
|
// Definitions.
|
||||||
import { GestureEventData, SwipeGestureEventData, PanGestureEventData, RotationGestureEventData, PinchGestureEventData } from ".";
|
import { GestureEventData, GestureEventDataWithState, SwipeGestureEventData, PanGestureEventData, RotationGestureEventData, PinchGestureEventData } from ".";
|
||||||
import { View, EventData } from "../core/view";
|
import { View, EventData } from "../core/view";
|
||||||
|
|
||||||
// Types.
|
// Types.
|
||||||
@@ -167,7 +167,9 @@ export class GesturesObserver extends GesturesObserverBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (type & GestureTypes.longPress) {
|
if (type & GestureTypes.longPress) {
|
||||||
nativeView.addGestureRecognizer(this._createRecognizer(GestureTypes.longPress));
|
nativeView.addGestureRecognizer(this._createRecognizer(GestureTypes.longPress, args => {
|
||||||
|
this._executeCallback(_getLongPressData(args));
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type & GestureTypes.touch) {
|
if (type & GestureTypes.touch) {
|
||||||
@@ -359,6 +361,20 @@ function _getRotationData(args: GestureEventData): RotationGestureEventData {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _getLongPressData(args: GestureEventData): GestureEventDataWithState {
|
||||||
|
const recognizer = <UILongPressGestureRecognizer>args.ios;
|
||||||
|
|
||||||
|
return <GestureEventDataWithState>{
|
||||||
|
type: args.type,
|
||||||
|
view: args.view,
|
||||||
|
ios: args.ios,
|
||||||
|
android: undefined,
|
||||||
|
object: args.view,
|
||||||
|
eventName: toString(args.type),
|
||||||
|
state: getState(recognizer)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
class TouchGestureRecognizer extends UIGestureRecognizer {
|
class TouchGestureRecognizer extends UIGestureRecognizer {
|
||||||
public observer: GesturesObserver;
|
public observer: GesturesObserver;
|
||||||
private _eventData: TouchGestureEventData;
|
private _eventData: TouchGestureEventData;
|
||||||
|
|||||||
Reference in New Issue
Block a user