5

通話などの中断が発生し、iPhone や iPad のアプリの正常な動作が妨げられることがあります。

たとえば、UIScrollView インスタンスを 1 つ作成し、UIScrollView デリゲート メソッドを実装しました。

scrollViewWillBeginDragging メソッドにより、アプリ内のすべてのカスタム ボタンが非アクティブ化されました。次に、scrollViewDidEndDragging メソッドと scrollViewDidEndDecelerating メソッドがこれらのカスタム ボタンをアクティブにしました。つまり、ユーザーがスクロールしている間、すべてのカスタム ボタンがしばらく非アクティブになりました。

問題は、ユーザーがドラッグを開始して UIScrollView インスタンスを保持している間に、ホーム ボタンと電源ボタンを押してスクリーンショットを撮った場合、scrollViewDidEndDragging と scrollViewDidEndDecelerating のいずれも呼び出されなかったことです。そのため、アプリがめちゃくちゃになりました。

UIViewController に UIApplicationWillResignActiveNotification メソッドを実装しましたが、スクリーンショットを撮った後に呼び出されませんでした。

イベントの定期的な流れを妨げるような中断をどのようにキャッチできますか?

時々、中断のために touchesEnd と touchesCanceled も呼び出されませんでした。

ありがとうございました。

4

1 に答える 1

2

performSelector:withObject:afterDelay私は同じ問題に直面し、 NSObject のメソッドを使用してそれを取り除きました。

scrollViewDidScroll で:

[NSObject cancelPreviousPerformRequestsWithTarget:yourController];
[yourController deactivateButtons];
[yourController performSelector:@selector(activateButtons) withObject:nil afterDelay:0.5];

このテクニックを試して、あなたが言及した他のテクニックと組み合わせることができます。
それが役立つことを願っています。幸運を!

于 2011-01-17T11:11:14.833 に答える