2012-04-26 17 views
1

私はタッチでビューを発光させようとしていますが、タッチが終了するとそれは明るくなりません。これを実行している間に、私は指でビューを上げると、- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)eventメソッドが呼び出されず、その代わりに- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)eventメソッドが呼び出されることに気付きました。それは正常な行動ですか?低メモリ警告のようなシステムの問題のためにタッチがキャンセルされた場合、touchesCancelledが呼び出されたと思いました。私はタッチを使用して私の仕事をしたが、それでも、なぜそれが適切にtouchesEndedを呼び出さないのだろうと思っている。バグですか?toucheswithの代わりにtouchescancelledが呼び出されました

+1

これは正常な動作ではありません。私はそれがバグだとは思わない。答えはあなたのプロジェクトに完全に依存します。誰もコードのすべての関連部分を見ることなく推測し始めることができます。 – borrrden

答えて

2

このビューに触れて指を上げると、指をドラッグしないでください。そのようにしたら、touchesCancelled:メソッドが呼び出されます。だから私はあなたの意見が触れるには小さすぎると思う。はいの場合は大きなビューを作成してもう一度やり直してください。それはあなたのために次に動作します。

は、それが始まった後のタッチは非常に第1、第2、またはで十分動かない場合touchesCancelledはなくtouchesEndedで呼ばれているように見えますcomment ..

0

としてこれを考えてみましょう。私が小さくても速い動きをすると、触れ合った人は全部の動きが十分ではなかったために発砲するでしょう。私が小さな動きをゆっくりとすると、操作が終わる前にキャンセルされたタッチが、iOSが私がさらに移動するかどうかを待っていることをあきらめているので、放っておきます。明らかに、iOSはどれほどの動きが「重要」であるかについての判断を下しており、小さな動きはキャンセルされたタッチとして扱っています。

touchesEndedをtouchesCancelledから呼び出すことができます。しかし、非常に速い動きの場合、これはタイムアウト期間まで呼び出されないので、動きが実際に終了してからキャンセルされるまでの時間が遅れることがあります。

ちょっとした動きをしてから指を持ち上げてから別の動きを始めると、触れられる前に気絶したことに気がつきました.Cancelledは解雇されました。新しい動きと触れられていません.Beganは発砲しません。これは、私のアプリの手書き機能が複雑で、手書きはすべて小規模で素早い動作であるためです。

関連する問題