2011-09-11 7 views
4

これはどこかに投稿されているかもしれませんが、見つけられないかもしれません。私は2つのUIViewsと簡単なIOSアプリケーションを書いています。ユーザは、最初に画面の特定の領域を押し続けてからタッチを離し、次に下の2番目のビューにすばやく触れます。iOS Detect User Touch Release

最初のUIViewにはUILongPressGestureRecognizerが付属しており、正常に動作します。 2番目のUIViewには、UITapGestureRecognizerが付属していて、うまく動作します。しかし、私はこれらのジェスチャー認識ツールのいずれかを取得して、ユーザーがタッチを解除したことを示すものを返すことはできません。

は私が無駄にこのコードを試してみました:

- (void)holdAction:(UILongPressGestureRecognizer *)holdRecognizer 
{ 
    if (UIGestureRecognizerStateRecognized) { 
     holdLabel.text = @"Holding Correctly. Release Touch when ready."; 
     holdView.backgroundColor = [UIColor greenColor]; 
    } else if (UIGestureRecognizerStateCancelled){ 
     holdLabel.text = @"Ended"; 
     holdView.backgroundColor = [UIColor redColor]; 
} 

任意の提案は素晴らしいことだと誰かがデバイスに触れるユーザの状態を返すコールを実装する方法を知っている場合は特に。私は開発者の文書を見て、空になってきました。

+0

ビューの代わりにボタンを使用できますか? UIButtonにはTouchUpInsideイベントがあります。普遍的なアプローチの場合は –

答えて

9

カップルの時間いじった後、私は確かに、働いている方法を見つけませんそれを行う最良の方法であれば。私は以下のコードのように書く必要があることが分かります。私はviewDidLoad()メソッドで宣言していた特定のUIGestureRecognizerを呼び出していませんでした。

- (void)holdAction:(UILongPressGestureRecognizer *)holdRecognizer 
{ 
    if (holdRecognizer.state == UIGestureRecognizerStateBegan) { 
     holdLabel.text = @"Holding Correctly. Release when ready."; 
     holdView.backgroundColor = [UIColor greenColor]; 
    } else if (holdRecognizer.state == UIGestureRecognizerStateEnded) 
    { 
     holdLabel.text = @"You let go!"; 
     holdView.backgroundColor = [UIColor redColor]; 
    } 
} 
+0

すばらしい解決策。私は '[holdGesture setMinimumPressDuration:0.01];を追加しました。 – Segev

2

(ジェスチャ認識機能を使用するのではなく)ここで手動でタッチ操作する必要があります。どのUIResponderサブクラスも、次の4つのメソッドを実装できます。

– touchesBegan:withEvent: 
– touchesMoved:withEvent: 
– touchesEnded:withEvent: 
– touchesCancelled:withEvent: 

これらのメソッドを使用すると、タッチイベントのすべてのフェーズにアクセスできます。長押しを検出するために独自のロジックを実装する必要があるかもしれませんが、すべてのタッチに完全にアクセスできます。タッチ取り扱いの詳細については

、WWDC 2011からこのセッションは、(DEVアカウントが必要)黄金です:

https://developer.apple.com/itunes/?destination=adc.apple.com.8270634034.08270634040.8367260921?i=1527940296

+0

+1。 – Jacksonkr

関連する問題