私のアプリケーションには、ユーザーがビューをピンチしてフルスクリーン(Flipboardなど)に展開できるシステムセットアップがあります。ただし、そうするときは、両方のモードで表示されるいくつかのボタンを無効にします。通常は正常に動作しますが、次のエッジケースでは失敗します。
1)非ズームモードでボタンを押します(離さないでください)
2)ビューをピンチして拡大し、アニメーションが終了するのを待ちます。次に、ボタンはにuserInteractionEnabled
設定されNO
ます。
3)ボタンを離すと、とにかくターゲット関数が呼び出されます。ターゲット関数にブレークポイントを設定し、lldbを使用してボタンをチェックし、userInteractionEnabled
実際にに設定しましたNO
。
無効になっているボタンがターゲットを起動しないと期待するのは間違っていますか?ターゲット関数でこれをチェックする必要がありますか?
見たい場合に備えて、実際にボタンを無効にする関数を次に示します(編集:混乱しているようです。以下のコードに問題はありません。念のために含めました)。
//The function that disables the buttons
- (void)disableButtons:(SO2MenuButtons)buttons
{
UIView *view = nil;
if(buttons & SO2Mokuji)
{
view = [self.view viewWithTag:151];
view.alpha = 0.5;
view.userInteractionEnabled = NO;
}
if(buttons & SO2NoteView)
{
view = [self.view viewWithTag:152];
view.alpha = 0.5;
view.userInteractionEnabled = NO;
}
//etc, etc...
}
アップデート:
上記をこれに変更しても同じ結果になりました
- (void)disableButtons:(SO2MenuButtons)buttons
{
UIButton *view = nil;
if(buttons & SO2Mokuji)
{
view = (UIButton *)[self.view viewWithTag:151];
view.enabled = NO;
}
if(buttons & SO2NoteView)
{
view = (UIButton *)[self.view viewWithTag:152];
view.enabled = NO;
}
//etc, etc...
}
編集問題が何であるかを明確に伝えていなかったようですので、問題を実証する簡単なプロジェクトをまとめました。ここからダウンロードできます(このメッセージを読んだ時期によっては、前のリンクの有効期限が切れている可能性があります)。問題は、ボタンが無効になった後も、ボタンがターゲットメソッドを起動していることです。上記のページがどのように見えるかを見た後、filedropperを使用してお詫びします...プロジェクトを共有するための一般的な方法が最近何であるかわかりません>_<。大きな緑色のダウンロードボタンをクリックせずに、「このファイルをダウンロード」と表示されているボタンをクリックしてください