2015-11-06 5 views
7

私はチャットビューで自分のアプリでForce Touchを実装しました。ユーザが他のユーザのチャットメッセージバブルに触れると、そのユーザのプロフィールが提示される。いくつかの奇妙な理由により、メッセージバブルが静かに押されると、インタラクティブな移行が止まり、表示されているすべてが、段階的に廃止されるはずのビューのスクリーンショットです。静かにタッチするとForce Touchアニメーションがフリーズする

私はこの問題をView Hierarchy Debuggerを使ってデバッグしましたが、UITransitionViewは確かに一番上のビューです。アプリがクラッシュすることはありません。まだ実行されており、スクリーンショットが上に貼られているため、ユーザーはメッセージを受信できますが、メッセージを表示したり、画面を終了したりすることはできません。

このような問題があったことはありますか? Appleのバグのように聞こえる。

+0

おそらく、いくつかのコードを共有することができます。 Appleのpeek/pop APIを使用していますか? – beyowulf

+0

こんにちは@beyowulf。私はこの問題をサンプルプロジェクトと重複させてここに投稿します。はい、peek/pop APIを使用しています。 –

+0

私のGithubでサンプルプロジェクトをご覧ください:https://github.com/JinkProject/PeekPopBug –

答えて

0

このバグの原因が見つかりました。あなたのビューコントローラは、力touch用のプレビューをサポートする必要がある場合

は、あなたがこれを行うには

- (id <UIViewControllerPreviewing>)registerForPreviewingWithDelegate:(id<UIViewControllerPreviewingDelegate>)delegate 
    sourceView:(UIView *)sourceView NS_AVAILABLE_IOS(9_0); 

メソッドを呼び出すことによってデリゲートと、このビューコントローラを登録する必要があります。

私はちょうど突然(一度サブビューコントローラの中に、かつてのスーパークラスでviewDidLoad())を2回この関数を呼び出して、私は私のサブビューコントローラに一度削除すると、このバグが修正されました!素晴らしい...

それはそれが起こるために何も意味がないので、それはまだAppleのバグです。しかし、この回答が私と同じ問題を抱えている開発者に役立つことを願っています。

FYI。私はちょうどあなたのGithubのコードを参照し、登録メソッドのダブルコールを発見した。たぶん、このバグの他の理由があります。 UITableViewControllerのサブクラスで登録メソッドを削除しようとする可能性があります。ちなみに、View ControllerでComponentKitを使用している場合、この問題が再現されます。

関連する問題