如何在 nativescript 中制作点击阻塞覆盖?
How to make a tap-blocking overlay in nativescript?
我正在创建一个自定义对话框弹出窗口,覆盖很好,只是我的点击会穿过它。有没有办法让布局点击阻塞?就像按钮一样。无法真正聆听所有手势并手动控制它们,这意味着我将不得不在所有其他采用点击方式的布局上阻止它们。不想使用自定义对话框功能,因为 TIP: By design on iPhone, a modal page appears only in full screen
并且我想尽量减少 android 和 ios 之间的差异。
示例代码:
<AbsoluteLayout>
<StackLayout class="content-wrapper">
<router-outlet></router-outlet>
</StackLayout>
<StackLayout class="custom-dialog">
<Label text="Loading..." textWrap="true"></Label>
</StackLayout>
</AbsoluteLayout>
刚刚找到从我的角度来看这个任务的最佳解决方案。
只需要为覆盖布局实现虚拟触摸处理程序。
接下来将是 NativeScript Core 实现(它可以简单地移植到 NativeScript Angular 和 Vue):
XML
<GridLayout>
<StackLayout class="content">
<Label text="Some content" textWrap="true"></Label>
</StackLayout>
<StackLayout class="overlay" touch="onOverlayDummyTouch">
<Label text="Loading..." textWrap="true"></Label>
</StackLayout>
</GridLayout>
TypeScript
export function onOverlayDummyTouch(args: TouchGestureEventData) {
}
我正在创建一个自定义对话框弹出窗口,覆盖很好,只是我的点击会穿过它。有没有办法让布局点击阻塞?就像按钮一样。无法真正聆听所有手势并手动控制它们,这意味着我将不得不在所有其他采用点击方式的布局上阻止它们。不想使用自定义对话框功能,因为 TIP: By design on iPhone, a modal page appears only in full screen
并且我想尽量减少 android 和 ios 之间的差异。
示例代码:
<AbsoluteLayout>
<StackLayout class="content-wrapper">
<router-outlet></router-outlet>
</StackLayout>
<StackLayout class="custom-dialog">
<Label text="Loading..." textWrap="true"></Label>
</StackLayout>
</AbsoluteLayout>
刚刚找到从我的角度来看这个任务的最佳解决方案。
只需要为覆盖布局实现虚拟触摸处理程序。
接下来将是 NativeScript Core 实现(它可以简单地移植到 NativeScript Angular 和 Vue):
XML
<GridLayout>
<StackLayout class="content">
<Label text="Some content" textWrap="true"></Label>
</StackLayout>
<StackLayout class="overlay" touch="onOverlayDummyTouch">
<Label text="Loading..." textWrap="true"></Label>
</StackLayout>
</GridLayout>
TypeScript
export function onOverlayDummyTouch(args: TouchGestureEventData) {
}