嵌入在UIView中的UITextField没有响应触摸事件

时间:2014-04-25 08:48:51

标签: ios objective-c uiview uitextfield

为什么UITextField在嵌入UIView(其本身嵌入原始视图控制器的主UIView中)时无法响应触摸事件?

以下是代码:

- (void)loadView
{
    self.view = [UIView new];

    UIView *positionalView = [[UIView alloc] initWithFrame:CGRectMake(20, 100, 280, 100)];

    UITextField *usernameField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 280, 50)];
    usernameField.placeholder = @"Full Name";
    usernameField.delegate = self;
    [usernameField addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged];
    [positionalView addSubview:usernameField];

    UITextField *passwordField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 280, 50)];
    passwordField.placeholder = @"Password";
    passwordField.delegate = self;
    [passwordField addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged];
    [positionalView addSubview:passwordField];

    [self.view addSubview:positionalView];
}

如果我只是删除positionalView并将文本字段直接添加到主self.view中,则上面的代码很难理解这种行为。

任何人都能解释一下吗?

3 个答案:

答案 0 :(得分:5)

您创建名为positionalView的局部变量,但将文本字段添加到名为positionalView的属性中。这些变量不一样。

答案 1 :(得分:0)

您需要bringSubviewToFront:

[positionalView addSubview:usernameField];
[positionalView bringSubviewToFront:usernameField];

对于passwordField和positionalView

也是如此

答案 2 :(得分:-1)

父UIView的大小为零,将UITextField的顶部,底部,左侧和右侧约束固定到父视图,以便父视图的大小为UITextField的大小,或者设置父UIView的框架以使其大小不为零。

检查“调试视图层次”调试工具以进行检查!

相关问题