0

これが5で発生する論理的な理由は考えられないので、髪を引き裂きますが、6では発生しません。したがって、基本的に、ナビゲーションバーとキャンセルボタンを備えたモーダル形式でビューが表示されます(UIBarButtonItem-カスタムはありませんナビゲーションバーの標準ボタン)。この[キャンセル]ボタンをタップすると、モーダルビューが消えます。これはiOS6では問題なく機能しますが、iOS 5の場合、コード内の3か所のうち2か所で機能しません。私にとって奇妙なのは、それが1つでは機能するが、他の2つでは機能しないことです。

ストーリーボードを使用して、ボタンを右クリックし、[送信済みアクション]の下の[セレクター]をクリックして、IBActionViewControllerの.hファイル内の適切なメソッドにドラッグします。リンクは、Xcodeの小さな点滅アニメーションで正常に確認されます。iOS 6でアプリを実行すると(シミュレーターやデバイスは関係ありません)、ボタンをタップするとメソッドが正常に実行され、モーダルビューが閉じられます。ただし、iOS 5では、メソッドが呼び出されることはありません(メソッド内にブレークポイントを設定して、ヒットするかどうかを確認します)。IBActionメソッドの引数をからidに切り替えてみましたUIBarButtonItem *。ただし、葉巻はありません。

また、プログラムで(でviewDidLoad)キャンセルボタンのアクションをセレクターに設定してみました。目標をVCに設定しました。二度と葉巻はありません。これが私の現在のセットアップのスクリーンショットです:

IBActionメソッドに注意してください

方法に注意してくださいIBAction

私が見逃したドキュメントに魔法の条項がありますか?iOS 5で動作させるために、私がしなければならない非常に特別なことはありますか?それは確かに私にはバグのように思えますが、私はまだこのようなものにかなり慣れていないので、私は何を知っていますか。

私はXcode4.5.2とストーリーボードを使用しており、リリースにはiOS5とiOS6をターゲットにしています。

あなたの助けに感謝します、ありがとう。

4

3 に答える 3

2

GestureRecognizerの使用に問題があると思います。そのコードにコメントして、試してみてください...

于 2012-12-03T02:52:41.753 に答える
1

UIViewテキストフィールドとボタンの下、およびナビゲーションバー/タイトルの下にある別のファイルを追加しました。プログラムでタップジェスチャを追加しましたが、これはタップとキャンセルボタンの両方のアクションを認識しているようです。UIBarButtonItemジェスチャがルートビューにある場合に、タップジェスチャがのアクションを飲み込む理由を知りたいのですが。この質問は私がこれを理解するのに役立ちました。ありがとう。

于 2012-12-03T18:00:06.070 に答える
0

次のデリゲートメソッドを使用して、ジェスチャレコグナイザーからビュー/コントロールを除外できます。

// UIGestureRecognizerDelegate

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    // exclude your view from gesture recognizer
    if(yourView == touch.view)
    {
        return NO;
    }

    // 
    return YES;
}

于 2012-12-04T01:28:34.420 に答える