2016-07-11 10 views
1

現在、私は、タッチイベントがそこに到達することを可能にするテーブルセルがあるところで問題に遭遇しています。しかし、ユーザーがセルを1秒間に2〜4回押すと、複数のビューがナビゲーションビューコントローラにプッシュされます。これは、ビューがポップオフされ、ナビゲーションコントローラがサブビューに戻り、戻ってこないときに明らかなエラーを引き起こします。複数のトラップに至るまで、残念ながらエラーログはありません。ただし、この動作は最初にサポートされるべきではないためです。問題はスレッドロックの他に、UiButtonsまたはテーブルセルの複数のタッチイベントを防ぐ他の方法がありますか?目的Cタッチイベントロック

- サイドインフォメーション サイド情報が必要な場合があります。私はXcode 7で追加されたhttpsとhttpセキュリティ設定のため、Xcodeバージョン6.4で作業しています。これ以降のバージョンのXcodeでは、知っておくといいですね。助けていただきありがとうございます。

+0

タッチから発生するコードを表示します。 – Fogmeister

+0

ここに1分で投稿します。 – Bored915

+0

次回(プッシュされた)UIViewControllerでviewDidAppearの前にあまりにも多くの作業をしていますが、UIViewControllerはUIスレッドをブロックします。このため、新しいUIViewControllerに遷移アクションを入力すると同時にUITouchEventが受信されます。 userinteraction enableフラグの使用をお勧めしません。 –

答えて

3

それがタップした後に、ボタン(またはセル)をロックすることができる:

button.userInteractionEnabled = NO; 

または全インターフェイスを:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 

及び遷移/ロードが行われたときにロックを解除します。

+0

それはうまくいくように思えます。 – Bored915

2

GCDでタッチイベントを抑制しない場合は、UIButtonUIGestureRecognizerの両方がenabledプロパティを公開します。ワンタッチでボタンを無効にし、詳細ビューコントローラを押した後にボタンを再び有効にするだけです。

それは詳細ビュー押しコントローラのviewWillAppear方法になり再度有効にする簡単な方法 - あなたはUINavigationControllerに耳を傾けることなく、バックそのビューコントローラへ行ってきましたびenabledプロパティは自動的にリセットされるという方法をトランジションなど