gpt4 book ai didi

c# - 在允许更多触摸识别之前等待 TouchesEnded 中的操作完成 - Xamarin iOS

转载 作者:行者123 更新时间:2023-12-01 19:45:38 25 4
gpt4 key购买 nike

当 subview 被触摸时,它被移动到主视图中的指定位置。仅限 1 应允许 subview 在任何给定时间移动。问题是,如果我同时/几乎同时触摸两个 subview (例如,如果用户在移动设备上同时使用两个拇指),多个 subview 会同时移动。

我想如果 touches == 1 ,我不会有这个问题。
我实现了一个全局bool但这也不能解决问题。

有小费吗?谢谢!

更新
我能够用 ExclusiveTouch 解决一半的问题:当同时触摸两个 subview 时,只移动一个。但是,如果两次触摸之间的时间很短,两个 subview 仍然会移动。也许它与移动瓷砖的 0.15 秒动画有关?就像一个在另一个完成之前开始?

    ...
bool canTouch = true;
...

public override void TouchesEnded(NSSet touches, UIEvent evt)
{
if (canTouch)
{
canTouch = false;

base.TouchesEnded(touches, evt);

int touchesCount = (int)touches.Count;

if (touchesCount == 1)
{
UITouch myTouch = (UITouch)touches.AnyObject;
UIView touchedView = myTouch.View;

// Move 1 touched view...
UIView.Animate(.15f,
() => //animation
{
touchedView.Center =
emptySpot;
},
() => //completion
{
emptySpot = thisCenter;
});
}
}

canTouch = true;
}
}

最佳答案

你试过yourView.MultipleTouchEnabled = false; ?或者从 iOS 设计器的 View 面板中禁用它?

更新
对于快速触摸场景,我会尝试仅在“上部” View 中捕获触摸,而无需在代码周围添加额外的 bool 变量。

public override void TouchesBegan (NSSet touches, UIEvent evt)
{
if (! ExclusiveTouch)
base.TouchesBegan (touches, evt);
}

UIViews 派生自 UIResponders,通过覆盖方法中的 base(...)/super(...) 将事件(触摸)转发到响应者链。不为独占 View 执行它允许您不转发触摸事件。

Documentation

关于c# - 在允许更多触摸识别之前等待 TouchesEnded 中的操作完成 - Xamarin iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48726070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com