2

私のアプリケーションには、ユーザーがビューをピンチしてフルスクリーン(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を使用してお詫びします...プロジェクトを共有するための一般的な方法が最近何であるかわかりません>_<。大きな緑色のダウンロードボタンをクリックせずに、「このファイルをダウンロード」と表示されているボタンをクリックしてください

4

2 に答える 2

1

ビット単位のAND演算子&を使用しているように見えますが、必要なのは論理AND演算子&&です。

于 2012-04-27T06:09:33.067 に答える
1

これらのボタンをに設定exclusiveTouchすることで、これを回避する方法を見つけました。YESそうすれば、ユーザーはボタンを押したままビューをつまむことができません。もちろん、これは元の問題に実際には対処していないので、今のところこの回答を受け入れません。しばらくの間誰も答えを投稿しなければ、私はこれを受け入れます。

于 2012-04-27T06:39:45.913 に答える