-1

在我的项目中,我将视图设置为我的应用程序的根视图。

在这个根视图的控制器中,我得到了这样一个层次结构:

根视图--[添加子视图]-- 前景视图--[添加子视图]-- 文本字段

我已经在代码而不是 xib 中做到了这一点。

在这种情况下,文本字段无法获得焦点。当我单击屏幕上的文本字段时,似乎什么也没发生。但如果我这样修改:

rootview --[addsubview]--foregroundView

根视图--[添加子视图]-- 文本字段

一切正常。

由于我想将 foregroundView 和 textfield 作为一个组,我更喜欢使用前一种样式。有人知道吗?非常感谢。

这是我的麻烦的核心源代码:

//it's a viewController.m , it's view has been set as the root view for the app.
self.foregroundView = [[UIImageView alloc] initWithFrame:CGRectMake(15, 140, 290, 250)]; 
UIImage *foregroundImage = [XYZImageProcessor resizeImage:[UIImage imageNamed:@"Texture0203.jpg"] toSize:CGSizeMake(275, 250)];
[self.view addSubview:self.foregroundView ];
self.nickNameTextField = [self.class customTextFieldMake:CGRectMake(80, 200, 150, 30)];
[self.view addSubview:self.nickNameTextField];
//if I change it to    [self.foregroundView addSubview:self.nickNameTextField],the textfield can not be focused.
4

2 回答 2

2

这听起来好像您foregroundViewuserInteractionEnabled设置为 NO。这不仅仅意味着它foregroundView不接收触摸事件——它的子视图也没有。请参阅当父视图在 iOS 中将 userInteractionEnabled 设置为 NO 时如何进行触摸。(简短的回答:你不能。)

[foregroundView setUserInteractionEnabled:YES]因此,在构建视图时尝试设置。

如果foregroundView实现它自己的hitTest:withEvent:,它也可以防止与它的子视图交互。

于 2012-04-11T05:06:57.677 回答
0

尝试在viewWillAppear 中执行此操作:

[desiredField becomeFirstResponder];

通过使该字段成为第一响应者,它具有焦点并且将显示键盘。

于 2012-04-11T03:35:12.953 回答