2014-10-09 38 views
1

我創建了一個視圖,通過長按「激活」編輯模式後,其子視圖可以通過拖放進行重新排列。開始拖放後長按

我用於那兩個姿態重建器a UILongPressGestureRecognizerUIPanGestureRecognizer

一切都很好,但我想要開始拖動我的子視圖,而不必再次點擊我的視圖(例如,當您在跳板上重新排列圖標時)。

有沒有辦法做這樣的事情?

編輯:

我已經試過:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
    var res = false 

    if ((gestureRecognizer == longTapGesture && otherGestureRecognizer == panGesture) || (gestureRecognizer == panGesture && otherGestureRecognizer == panGesture)) { 
     res = true 
     println("") 
    } 
    return true 
} 

沒有成功。

回答

1

首先,這兩個手勢識別器應該很好地結合在一起。通常他們中的一個會取消另一個。爲了防止您可以使用UIGestureRecognizerDelegate方法gestureRecognizer: shouldRecognizeSimultaneouslyWithGestureRecognizer:併爲兩個識別器返回YES。

之後,您需要有一個布爾屬性來鎖定您的平移效果,在長按發生之前。如果此屬性設置爲YES,則UILongPressGestureRecognizer目標方法應該只執行一些操作。請記住在平移手勢完成/重置時將此屬性設置爲NO。

+0

這就是我的想法,但它不工作我正在編輯我的帖子,把一個代碼示例。 – Loadex 2014-10-09 13:40:33

+0

此外,我在檢測到長按事件時將該平移手勢添加到視圖中,如果這件事 – Loadex 2014-10-09 13:41:56

+0

重要。出現視圖時添加平移手勢。它應該始終啓用,並且您決定根據您的布爾屬性爲視圖設置動畫效果。 – dadalar 2014-10-09 13:45:14