UIView
サブビューとしていくつかある(MyView)のサブクラスがありUITextField
ます。MyViewはUITextFieldDelegate
、テキストフィールドがクリックされたときに通知を受けるためにプロトコルを実装します。これはうまく機能していました。UIView
次に、アニメーションでこのコンテナ(およびそのすべての子)をフェードインおよびフェードアウトできるように、テキストフィールドを一種の「コンテナ」に配置する必要があります。そこで、UIView(MySubview)を作成し、それをMyViewのサブビューにして、その中にすべてのテキストフィールドを配置しました。アニメーションは正常に機能しますが、UITextFieldDelegate
は呼び出されなくなります。これは、テキストフィールドがMyViewの直接の子ではなくなったためだと思います。これに対処する他の方法はありますか?
アップデート
私は自分のコードの小さなバージョンを作成しました。おそらくこれは問題を見つけるのに役立ちます。
@interface MyView : UIView <UITextFieldDelegate>
@implementation MyView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
// This is MySubview:
UIView *tempLabelsContainer = [[UIView alloc] initWithFrame:self.bounds];
[tempLabelsContainer setUserInteractionEnabled:YES];
[self addSubview:tempLabelsContainer];
self.labelsContainer = tempLabelsContainer;
[tempLabelsContainer release];
UITextField *aTextField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 100, 20)];
[aTextField setBackgroundColor:[UIColor clearColor]];
[aTextField setText:@"Some text"];
[aTextField setTag:1];
[aTextField setDelegate:self];
[self.labelsContainer addSubview:aTextField];
[aTextField release];
// More labels are being added
}
return self;
}
#pragma mark - UITextFieldDelegate methods
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
// This is not being called
NSLog(@"TextField with the tag: %d should be edited", [textField tag]);
return NO;
}