2016-08-30 19 views
0

好吧,所以我想弄清楚的是如何讓用戶觸摸視圖,將他們的手指拖過視圖到另一個視圖,並且總是知道他們正在拖動哪個視圖。所以如果他們來回走動,你可以不斷打印出他們目前正在拖動手指的視圖。關於這一點的難點在於視圖位於兩個獨立的表視圖單元格中。我原來並沒有提到這一點,因爲我不認爲這會有所作爲,但是我所嘗試的一切都不起作用,因爲他們在表格單元格中。如何拖動手指跨過2個視圖並知道它始終處於哪個視圖

回答

1

在用戶繼續拖動時,您可以在父視圖或viewController中使用touchMoved,那麼您可以使用方法hitTest:inPoint,該方法將返回該點下的視圖。

下面是一個viewController一個例子:

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 

    // first get the location in the parent view 
    let location = touches.first!.locationInView(self.view) 

    // ask the parent view to give you the subview falling under the location 
    let view = self.view.hitTest(location, withEvent: event) 

    // do what you want with it 
    print("View: %@", NSStringFromClass((view?.classForCoder)!)) 
} 

注意:你的所有子視圖必須有userInteractionEnabled = true

+0

@wayne所有子視圖必須有用戶交互啓用了則hitTest –

+0

這不是什麼印刷 –

+0

你的意思是不打印任何工作,你應該得到的東西在領事 –

1

您可以通過使用UIControl類做到這一點,讓你的意見的UIControl

現在通過控制事件爲視圖添加動作TouchDragInside(UIControlEvents.TouchDragInside)。然後,無論何時在視圖內拖動這個動作方法都會被調用。

你也可以知道通過使用控制事件時,拖動退出UIControlEvents.TouchDragExit

FYI

編輯: 檢測觸摸,當我們從一個我們另一種觀點認爲我們可以用行動UIControlEvents.TouchDragOutside控制開始拖動事件。使用TouchDragInsideTouchDragOutside這兩個視圖的控件事件組合來檢測從一個視圖拖到另一個視圖時的觸摸。

+0

我認爲這是我正在尋找!我必須先完成一個不同的部分,然後才能真正嘗試它,但它看起來正確,因此我將其檢查爲正確答案:) –

+0

如果我已經有了一個類視圖,那麼我只是讓該類UIControl而不是UIView類? –

+0

好吧,所以我得到了這個工作,它在功能上是這樣做的。唯一的問題是當它將一個視圖拖到另一個視圖上時,它不會觸及另一個視圖。它正在做什麼功能,但我怎麼開始觸摸另一個視圖? –

相關問題