簡體   English   中英

在UIScrollView中設置UIViews框架后未調用UIGestureRecognizer

[英]UIGestureRecognizer not called after setting UIViews frame inside UIScrollView

我遇到一些非常奇怪的問題。 基本上,我正在實現與水平1D網格對齊的拖放視圖。 好吧,所以當我拖動一個視圖並且其中心坐標X更大或更小然后是另一個視圖時,非拖動視圖應該在其原始位置的左側或右側設置動畫。

在大多數情況下,這都可以正常工作。 但是在某些特殊情況下,它不起作用。 在某些情況下,特定情況下視圖不再接收任何手勢回調。 我可以重現此問題,並發現當我刪除應用動畫的代碼時,一切正常。

基本上,這是當拖動的視圖位於下面的視圖應向左或向右移動的位置時調用的代碼

/**
 * 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設置動畫並附加了手勢識別器,是否可以想到一些想法?

如果有人願意,我可以將整個課程粘貼到這里進行測試。

解決方案我的設計中有一些“突出顯示”的視圖。 我無意間將相關觀點移到了那些透明的背景觀點之后。 所以現在我不使用addSubview:而是使用insertSubview:atIndex:

但是將@Anthonin C.標記為正確答案。 因為它為我指明了正確的方向(我通過覆蓋hitTest:方法發現了它)

您是否可以跟蹤otherView.bounds屬性,以驗證您的觸摸沒有超出范圍。 我最近遇到了這個問題,Apple文檔在此處提供了解決方案:將觸摸事件傳遞到其父視圖范圍之外的視圖中

抱歉,我沒有足夠的聲譽來評論您的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM