2

そのため、コントローラーにいくつかのテキストフィールドを配置しました..

Controller は UITextFieldDelegate を拡張して、これらのテキストフィールドの textFieldDidBeginEditing を処理し、すべて正常に動作します!

次に、TestTextField という新しいクラスから新しいテキスト フィールドを追加しようとしました。

ストーリーボードのカスタム クラスを TestTextField に変更し、次のように実装しました: (シミュレーターが起動し、NSLog が "init!" を出力し、TestTextField NSLog を押すと "begin" を出力し、その後シミュレーターが停止します。 EXC_BAD_ACCESS.)

TestTextField.m

#import "TestTextField.h"

@implementation TestTextField

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

- (id) initWithCoder:(NSCoder *) coder
{
    self = [super initWithCoder:coder];
    NSLog(@"init!");
    self.delegate = self;
    return self;
}

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    // Drawing code
}
*/

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    NSLog(@"begin");
}

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    NSLog(@"end ");

}

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    return YES;
}

@end

TextField.h

#import <UIKit/UIKit.h>

@interface TestTextField : UITextField <UITextFieldDelegate>

@end
4

3 に答える 3

1

私はこの同じ問題に直面しました。を調整することで最終的に解決しましたautocorrectionType

テキストフィールドを次のように設定してくださいautocorrectionType = UITextAutocorrectionTypeNo;

これで問題が解決することを願っています。

于 2013-09-02T09:33:26.600 に答える
1

iOSシミュレーター5でのみ発生するように見えるまったく同じ問題があります。

init でデリゲートを設定すると、アプリがクラッシュするようです。

行をコメントするだけself.delegate = selfで、エラーが削除されます。

だから私はself.delegate = selfオーバーロードされた- (void) touchesBegan:. このようにして、誰かが入力を開始したときにデリゲートが設定されていることを確認します。

于 2012-04-29T14:41:55.953 に答える
0

これはずっと前のことなので、今では何が起こったのかかなり確信しています。

この問題は、XCode の「カスタム クラス」の値に、もう存在しない古い値を残したことが原因であると 99% 確信しています。

于 2012-06-02T08:31:11.073 に答える