У меня есть подкласс 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;
}