8.7 发布—WinterCG 兼容性第一部分
了解更多

用户可以使用手势与 UI 组件进行交互。NativeScript 支持以下手势

除了tap之外,所有手势事件都具有以下共同数据

名称类型描述
eventName字符串事件的名称。
对象可观察对象触发事件的Observable实例。
类型GestureTypes手势的类型
视图Partial<View>触发事件的Partial<View>实例。这与object返回的 UI 组件相同
iOSUIGestureRecognizer获取底层的原生 iOS 特定UIGestureRecognizer
Androidandroid.view.GestureDetector获取底层的原生 Android 特定手势检测器

点击手势

操作:短暂触摸组件。

点击手势事件数据

tap手势事件仅提供eventNameobject属性。

TouchManager提供了一个方便易用的 API,包括您可以应用于tap手势(单独或甚至在整个应用程序中全局应用于任何有线点击手势/事件)的动画功能。

以下是一些tap事件绑定的示例

双击手势

操作:快速连续点击组件两次。

双击事件数据

名称类型描述
getPointerCount()数字获取事件中的指针数量。
getX()数字获取事件在触发事件的视图内的x坐标。
getY()数字获取事件在触发事件的视图内的y坐标。

长按手势

操作:按下组件一段时间。

长按手势事件数据

滑动手势

操作:快速滑动手指穿过屏幕。滑动速度很快,即使手指离开屏幕后也会影响屏幕

可能用法:在同一层次结构中的组件之间导航。

滑动手势事件数据

  • 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。
iOSUITouch与触摸关联的UITouch对象
getX()数字获取指针在触发事件的视图内的 X 坐标。
getY()数字获取指针在触发事件的视图内的 Y 坐标。
下一页
导航