为什么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中,则上面的代码很难理解这种行为。
任何人都能解释一下吗?
答案 0 :(得分:5)
您创建名为positionalView
的局部变量,但将文本字段添加到名为positionalView
的属性中。这些变量不一样。
答案 1 :(得分:0)
您需要bringSubviewToFront:
:
[positionalView addSubview:usernameField];
[positionalView bringSubviewToFront:usernameField];
对于passwordField和positionalView
也是如此答案 2 :(得分:-1)
父UIView的大小为零,将UITextField的顶部,底部,左侧和右侧约束固定到父视图,以便父视图的大小为UITextField的大小,或者设置父UIView的框架以使其大小不为零。
检查“调试视图层次”调试工具以进行检查!