2016-08-30 4 views
0

私は、ユーザーがビューに触れることを許可する方法を考えています。彼らがどのビューをドラッグしているかを常に知っています。だから彼らが前後に行くなら、あなたはいつも彼らが指をドラッグしているビューを印刷することができます。これについての難しい部分は、ビューが2つの別々のテーブルビューセルにあることです。もともと私はそれが違いを生むとは思っていなかったので言及しませんでしたが、私が試してみるのはテーブルセルにいるために働いていません。どのように2つのビューに指をドラッグし、それがいつでもオンになっているかを知るために

答えて

1

親ビューでtouchMoved、またはviewControllerを使用できますが、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

すべてのサブビューがuserInteractionこれは何も印刷しないどういう、あなたはビューはテーブルのセル内にあるので、それがかもしれ領事 –

+0

で動作するように有効にする必要があります@wayne。 –

+0

を印刷していないhitTest –

1

を持っている必要がありますが、UIControlクラスを使用することにより、これを行うUIControl

のサブクラスとして、あなたの意見を作ることができます

コントロールイベントTouchDragInside(UIControlEvents.TouchDragInside)を使用して、ビューにアクションを追加します。ビューの内部をドラッグするたびに、このアクションメソッドが呼び出されます。

制御イベントにUIControlEvents.TouchDragExit

FYI

編集使用して終了したドラッグしたときにあなたがも知ることができます:我々は、我々はUIControlEvents.TouchDragOutsideコントロールでアクションを使用することができます別のビューに1からドラッグを開始するとき、タッチを検出するために をTouchDragInsideTouchDragOutsideの2つのビューのコントロールイベントを使用して、あるビューから別のビューにドラッグしたときのタッチを検出します。

+0

私はこれが私が探していると思います!私は実際にそれを試すことができる前に別の部分を完了する必要がありますが正しいように私は正しい答えとしてそれをチェック:) –

+0

私はすでにビューのクラスを持っている場合、私はUIViewクラスの代わりにそのクラスUIControlを作るのですか? –

+0

さて、私はこれが機能しているので、それは機能のものです。唯一の問題は、一方のビューを別のビューにドラッグするときです。もう一方のビューでは開始しません。それは機能の中で何をしているのですが、私は他のビューをどのように始めるのですか? –

関連する問題