在UIScrollView中设置UIViews帧后未调用UIGestureRecognizer

时间:2016-06-16 14:51:58

标签: ios objective-c iphone uiview drag-and-drop

我有一些非常奇怪的问题。基本上我正在实现一个拖放到水平1D网格的拖放视图。好吧,所以当我拖动一个视图并且它的中心坐标X大于或小于一个不同的视图时,非拖动视图应该被动画到其原始位置的左侧或右侧。

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

基本上这是当拖动视图位于下方视图应向左或向右移动的位置时调用的代码

Worksheets("EmplOffers").Range(Cells(erow, 3), Cells(erow, 20)).PasteSpecial Paste:=xlPasteValuesAndNumberFormats

如果我为UIViews制作动画并附加手势识别器,是否有任何想法?

如果有人愿意,我可以在这里粘贴全班来测试它。

我有一些"突出显示"我的设计中的观点。而且我已经意外地将这些透明背景视图背后的相关观点移动了。所以现在我没有使用/** * 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; } } 而是使用addSubview:

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

1 个答案:

答案 0 :(得分:1)

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

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