1

私はこのXcodeの初心者です。

私のエラーの詳細:

1)Xcodeのユーティリティアプリケーションから始めました

2)MainView.xibにテキストフィールドを配置しました。簡単な方法でコード化するためにリンクしました(MainViewController.hファイルにドラッグするだけです。..それを宣言し、プロパティと合成の両方を設定しました。)

3)プログラムを実行すると、テキストフィールドが表示されます。テキストフィールドを押します。キーボードが表示されます。1文字または2文字の直後に入力しようとすると、エラーが発生しUIApplicationMainますEXC_BAD_ACCESS。私はかなり長い間それを検索しました、そしてここのどこかでスタックオーバーフローだけで私はtextFieldの修正をnoに変更する解決策を見つけました..それはそれを解決します...これは私の主な問題ではありません..しかし私はこの方法が今後も続けて大丈夫です....将来的には修正を有効にしたいと思います。

4)私の主な問題は、ユーザーがキーボードのリターンキーを押したときにテキストフィールドキーボードを元に戻したいということです。私はこの方法を使用しました..そしてあなたはそれを行うためにいくつかの方法を試しました..さまざまな方法をチェックするためにそれを見ることができます。

-(BOOL) textFieldShouldReturn:(UITextField *)textField {    
    // if([textField becomeFirstResponder]) {
    NSLog(@"IN FINCTION");
    [textField resignFirstResponder];
    return YES;
}

プログラムは、コメント付きとコメントなしの両方の行で実行されましたが、それでも関数の最後に到達するたびに、:で同じエラーが発生しUIApplicationMainますEXC_BAD_ACCESS

また、私はゾンビを有効にしましたが、正しく実行したかどうかはわかりません。そのため、誰かがそれに関する情報を必要としている場合。

別のバージョンのXcodeでコードを確認しました。1つは正常で、もう1つはGMでした。

コンソールにINFUNCTIONのログが表示されます。

ありがとう

4

1 に答える 1

2

NO現在の方法では、textFieldからフォーカス(およびカーソル)を削除しているので、そのメソッドから戻りたいと思うでしょうが、次に、戻るボタンを処理することを示しています。しかし、あなたはファーストレスポンダーを辞任したので、押されたリターンボタンを処理する人は誰もいません。

これを試して:

-(BOOL) textFieldShouldReturn:(UITextField *)textField {    
    [textField resignFirstResponder];
    return NO;
}

UITextFieldDelegateプロトコルのドキュメントから:

textFieldShouldReturn:

テキストフィールドが戻るボタンの押下を処理する必要があるかどうかを代理人に尋ねます。


上記が機能しない場合は、これを試してください。

デバッガーでNSZombieEnabledMallocStackLogging、およびguardmallocを設定します。次に、アプリがクラッシュしたら、gdbコンソールに次のように入力します。

(gdb) info malloc-history 0x543216

クラッシュの原因となったオブジェクトのアドレスに置き換える0x543216と、はるかに便利なスタックトレースが得られ、問題の原因となっているコード内の正確な行を特定するのに役立ちます。

詳細な手順については、この記事(how-to-debug-exc_bad_access-on-iphone)を参照してください。


上記も機能しない場合は、これを試してください。

シミュレータのキーボード設定で「自動修正」をオフにしてみることもできます。シミュレータのバージョンの1つにバグがあり、テキストフィールドにテキストを入力しようとするとクラッシュする可能性があります。

シミュレーター

于 2011-10-22T16:14:28.113 に答える