そのため、コントローラーにいくつかのテキストフィールドを配置しました..
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