2014-10-01 78 views
1

我需要UI這樣的:如何爲禁用用戶交互的子視圖實現longPressGestureRecognizer?

enter image description here

,2個按鈕(黃色和紅色)和背景視圖(灰色),這將有下一個行爲: - 高亮按鈕當我按下在其上; - 當我釋放按鈕時執行; - 當我按下並從任何其他視圖的按鈕移動,按鈕變得突出顯示(例如:按灰色矩形和紅色,或按黃色和紅色釋放); - 爲按鈕支持手勢(如長按和輕掃)

所以對解決我的問題,我只發現了下一個辦法: 我重新定義了我的GrayView觸摸方法:touchesCancelledtouchesMovedtouchesBegan,並有我檢查,如果當前觸摸位置屬於某個矩形 - 我執行適當的操作。但是對於這個解決方案,我不得不使用我的按鈕userInteractionEnabled = false,這意味着它們不再支持手勢或其他事件。所以,如果我使用支持它,我必須自己實現它,我不該做什麼。

那麼我該如何解決這個問題?

+0

您是如何檢測按鈕(在您的第一個解決方案之前)的?這是一種姿態嗎? UIView方法覆蓋?按鈕動作觸及? 無法爲您提供有關您的實施的如此少的信息的幫助 – KIDdAe 2014-10-01 09:17:34

回答

1

如果我理解正確,也可以將手勢識別器添加到灰色視圖中。當手勢識別器觸發時,將發現觸摸區域中的哪個彩色視圖:

- (void)tapAction:(UITapGestureRecognizer*)recognizer{ 
    if(recognizer.state == UIGestureRecognizerStateEnded){ 
     CGPoint position = [recognizer locationInView:grayView]; 
     if(CGRectContainsPoint(redView.frame, position) { 
      ... 
     } 
    } 
} 
+0

您是對的,但僅對長按或輕敲有幫助,但對於輕掃手勢,這不是很有幫助,還是我錯了? – 2014-10-01 09:13:35

+0

用戶刷卡時你想做什麼? – VietHung 2014-10-01 09:17:50

+0

你仍然應該能夠找到哪個視圖被刷過。我不確定是否需要執行locationInView,如果在控制檯中顯示recognizer.view,會記錄什麼內容? – Krzysztof 2014-10-01 09:19:07

相關問題