基本概念
手势
用户可以使用手势与 UI 组件进行交互。NativeScript 支持以下手势
除了tap
之外,所有手势事件都具有以下共同数据
名称 | 类型 | 描述 |
---|---|---|
eventName | 字符串 | 事件的名称。 |
对象 | 可观察对象 | 触发事件的Observable 实例。 |
类型 | GestureTypes | 手势的类型 |
视图 | Partial<View> | 触发事件的Partial<View> 实例。这与object 返回的 UI 组件相同 |
iOS | UIGestureRecognizer | 获取底层的原生 iOS 特定UIGestureRecognizer。 |
Android | android.view.GestureDetector | 获取底层的原生 Android 特定手势检测器 |
点击手势
操作:短暂触摸组件。
点击手势事件数据
tap
手势事件仅提供eventName
和object
属性。
TouchManager提供了一个方便易用的 API,包括您可以应用于tap
手势(单独或甚至在整个应用程序中全局应用于任何有线点击手势/事件)的动画功能。
以下是一些tap
事件绑定的示例
双击手势
操作:快速连续点击组件两次。
双击事件数据
名称 | 类型 | 描述 |
---|---|---|
getPointerCount() | 数字 | 获取事件中的指针数量。 |
getX() | 数字 | 获取事件在触发事件的视图内的x 坐标。 |
getY() | 数字 | 获取事件在触发事件的视图内的y 坐标。 |
长按手势
操作:按下组件一段时间。
长按手势事件数据
state
:按压的状态。
滑动手势
操作:快速滑动手指穿过屏幕。滑动速度很快,即使手指离开屏幕后也会影响屏幕
可能用法:在同一层次结构中的组件之间导航。
滑动手势事件数据
direction
:滑动手势的方向。
可用方向
right = 1
,left = 2
,up = 4
,down = 8
,
平移手势
操作:当用户按下组件并立即开始四处移动它时,就会发生平移手势。平移执行速度较慢,允许更高的精度。一旦手指离开,事件就会停止发出。
平移手势事件数据
名称 | 类型 | 描述 |
---|---|---|
deltaX | 数字 | 与先前位置相比,以 DIP 为单位在x 方向上移动的距离。 |
deltaY | 数字 | 与先前位置相比,以 DIP 为单位在x 方向上移动的距离。 |
状态 | GestureStateTypes | 指示平移的状态。有关可用状态,请参阅GestureStateTypes。 |
捏合手势
操作:用户用两只手指触摸组件,然后将它们向内或向外移动。
捏合手势事件数据
名称 | 类型 | 描述 |
---|---|---|
状态 | 数字 | pinch 手势的状态。 |
缩放 | 数字 | |
getFocusX() | 数字 | |
getFocusY() | 数字 |
可能用法:放大或缩小内容。
旋转手势
操作:用户用两只手指触摸组件,然后同时向左或向右旋转它们。
旋转手势事件数据
rotation
(类型:number
)
触摸手势
这是一种通用手势,每当指针(通常是手指)执行触摸操作(向上、向下、移动或取消)时都会触发。
触摸手势事件数据
名称 | 类型 | 描述 |
---|---|---|
操作 | 'up' | 'move' | 'down' | 'cancel' | 获取触摸的操作 |
getActivePointers() | Array<Pointer> | 获取触发事件的指针。 注意:在 Android 中,始终只有一个活动指针。 [Pointer] 是一个表示正在触摸屏幕的手指(或其他物体)的对象。 |
getAllPointers() | Array<Pointer> | 获取所有指针。 |
getAX() | 数字 | |
getAY() | 数字 |
订阅多个手势
您可以按如下方式处理多个手势
xml
<Button text="TAP" class="button" longPress="{{ onLongPress }}" swipe="{{ onSwipe }}" tap="{{ onTap }}" doubleTap="{{ onDoubleTap }}"/>
手势操作
在某些情况下,您可能希望禁用用户交互或创建更复杂的 UI 交互,其中一些手势会穿过实际交互区域的父级。NativeScript 提供了一些用于处理类似情况的特定属性,如下所示
isUserInteractionEnabled
- 获取或设置一个布尔值,指示用户是否可以与视图交互。不影响视图的外观。默认值为true
。isEnabled
- 获取或设置一个布尔值,指示视图是否已启用。影响视图的外观。默认值为true
。
GestureStateTypes
cancelled = 0
began = 1
changed = 2
ended = 3
Pointer 接口
名称 | 类型 | 描述 |
---|---|---|
Android | 任何 | 指针的 ID。 |
iOS | UITouch | 与触摸关联的UITouch 对象 |
getX() | 数字 | 获取指针在触发事件的视图内的 X 坐标。 |
getY() | 数字 | 获取指针在触发事件的视图内的 Y 坐标。 |