gpt4 book ai didi

ios - 在 UIScrollView 中设置 UIViews 框架后未调用 UIGestureRecognizer

转载 作者:行者123 更新时间:2023-11-29 00:53:28 26 4
gpt4 key购买 nike

我遇到了一些非常奇怪的问题。基本上我正在实现一个拖放 View ,并与水平一维网格对齐。那么,当我拖动一个 View 并且它的中心坐标 X 大于或小于另一个 View 时,未拖动的 View 应该在其原始位置的左侧或右侧设置动画。

这在大多数情况下都可以正常工作。但在某些特殊情况下它不起作用。在某些特定情况下, View 不再接收任何手势回调。我可以重现此问题,并发现当我删除应用动画的代码时,一切正常。

基本上这是当被拖动的 View 位于下面的 View 应该向左或向右移动的位置时调用的代码

/**
* Animate element to its saved position
*/
- (void)switchElement:(unsigned int)draggedIndex with:(unsigned int)otherIndex
{
// first animate
UIView *view = views[draggedIndex];
UIView *otherView = views[otherIndex];
// IF I COMMENT THIS OUT, EVERYTHING WORKS FINE
otherView.frame = [self getImageRectForIndex:draggedIndex];
// now switch internally
if(draggedIndex != otherIndex)
{
// switch views
views[draggedIndex] = otherView;
views[otherIndex] = view;
}
}

如果我为 UIView 设置动画并附加手势识别器,是否有什么需要注意的?

如果有人愿意,我可以把整个类(class)贴在这里进行测试。

解决方案我的设计中有一些“亮点” View 。而且我无意中将相关 View 移到那些透明背景 View 后面。所以现在我不使用 addSubview:,而是使用 insertSubview:atIndex:

但将@Anthonin C. 标记为正确答案。因为它为我指明了正确的方向(我通过覆盖 hitTest: 方法找到了它)

最佳答案

请您跟踪 otherView.bounds 属性以验证您的触摸是否超出范围。我最近遇到了这个问题,Apple 文档在这里提供了解决方案:Delivering touch events to a view outside the bounds of its parent view

抱歉,我没有足够的声誉来评论您的答案。

关于ios - 在 UIScrollView 中设置 UIViews 框架后未调用 UIGestureRecognizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37862633/

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