супер вид - вид - суб вид.Реализация, которая маскирует textField, не взаимодействует.IOS.Помогите, пожалуйста - PullRequest
1 голос
/ 23 декабря 2011

Спасибо за поиск, я пытаюсь реализовать в суперпредставлении (контроллере представления) собственное представление, которое я создал.

fromAge = [[simpleFormCell alloc]initWithFrame:CGRectMake(0, spaceFromTopLabel + 190, 200, 30)];
fromAge.title = @"Age";
fromAge.placeholder = @"";
fromAge.widthOfTextField = 60; 
[fromAge populateView];
fromAge.textField.delegate = self;
fromAge.textField.tag = fromAgeTextFieldTag;
[fromAge.textField setInputView:multipurposePicker];
[scrollViewBackground addSubview:fromAge];

toAge = [[simpleFormCell alloc]initWithFrame:CGRectMake(0, spaceFromTopLabel + 190, 200, 30)];
toAge.title = @"to";
toAge.placeholder = @"";
toAge.widthOfTextField = 60; 
toAge.leftPaddingForLabel = 210;
toAge.leftPaddingForTextField = 240;
[toAge populateView];
toAge.textField.delegate = self;
toAge.textField.tag = toAgeTextFieldTag;
[toAge.textField setInputView:multipurposePicker];
[scrollViewBackground addSubview:toAge];

simpleFormCell - это пользовательское представление со следующей реализацией:

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
    title = @"test";
    placeholder = @"test2";
    numberofLine = 1;
    leftPaddingForLabel = 20;
    leftPaddingForTextField = 140;
    widthOfLabel = 90;
    widthOfTextField = 160;
    height = 30;
    //[self populateView];
}
return self;
}

- (void)populateView{
label = [[UILabel alloc]initWithFrame:CGRectMake(leftPaddingForLabel, 0, widthOfLabel, (height * numberofLine))];
label.text = title;
label.textAlignment = UITextAlignmentLeft;
label.backgroundColor = [UIColor clearColor];
[self addSubview:label];

textField = [[UITextField alloc]initWithFrame:CGRectMake(leftPaddingForTextField, 0, widthOfTextField, (height * numberofLine))];
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.placeholder = placeholder;
textField.textAlignment = UITextAlignmentCenter;
textField.tag = tag;
[textField setReturnKeyType:UIReturnKeyNext];
[self addSubview:textField];
}

У меня есть аналогичный метод, который называется [self populateView] в init.Кажется, это работает нормально.Пожалуйста, примите во внимание, что multipurposePicker работает правильно.Это код, но он не применяется к этим двум экземплярам.

- (id)initWithPreset1:(CGRect)frame title:(NSString *)titleValue numberOfLine:(int)numberOfLineValue delegate:(id) delegateValue  tag:(int)tagValue{
self = [super initWithFrame:frame];
if (self) {
    title = titleValue;
    placeholder = @"";
    numberofLine = numberOfLineValue;
    leftPaddingForLabel = 20;
    leftPaddingForTextField = 140;
    widthOfLabel = 110;
    widthOfTextField = 160;
    height = 30;
    tag = tagValue;
    [self populateView];
    textField.delegate = delegateValue;
}
return self;
}

Эти белые коробки не будут отвечать на мои прикосновения.(textFieldDidBeginEditing не сработает).

enter image description here

[fromAge intoFirstResponder] работает.Это просто не будет отвечать на мои прикосновения.Я удостоверился, что нет ничего сверху.Пожалуйста помоги.Спасибо!

1 Ответ

0 голосов
/ 28 декабря 2011

Я нашел проблему! Комментарий Анны Карениной привел меня к правильному решению. Это не имеет ничего общего с иерархией представления, как я сначала подумал. То, что случилось, было, чтобы Age блокировал от Age. Это делает текстовое поле fromAge неотвечающим. Согласно комментарию Анны, несмотря на то что текстовое поле Age было показано, оно было вне поля зрения, которое поддерживает его. Это мешает ему принимать любые прикосновения. Таким образом, ни одна коробка не получает никаких касаний. Спасибо, Анна!

...