超级视图 - 视图 - 子视图。掩盖textField不可交互的实现。 iOS版。请帮忙

时间:2011-12-23 15:07:17

标签: ios xcode view keyboard uitextfield

感谢您的关注,我尝试在超级视图(视图控制器)中实现我创建的自定义视图。

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];
}

我有一个类似的方法,在init中调用[self populateView]。这似乎工作正常。请假设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 becomeFirstResponder]有效。它只是不会回应我的触摸。我确保它没有任何东西。请帮忙。谢谢!

1 个答案:

答案 0 :(得分:0)

我发现了问题! Anna Karenina的评论引导我找到了正确的解决方案。这与我最初想到的视图层次结构无关。发生了什么事是阿格尔阻止了年龄。这使得fromAge文本字段无响应。根据安娜的评论,尽管显示了文本字段,但它仍然支持它。这可以防止它接受任何触摸。因此,两个盒子都没有接受任何接触谢谢安娜!