无法专注于文本字段

时间:2012-04-11 03:19:54

标签: iphone objective-c ios ios5 xcode4

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

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

  

rootview - [addsubview] - foregroundView - [addsubview] - textfield

我在代码而不是xib中完成了这项工作。

在这种情况下,文本字段无法聚焦。当我点击屏幕上的文本字段时似乎没有任何反应。但如果我这样修改:

  

rootview - [addsubview] - foregroundView

     

rootview - [addsubview] - textfield

一切都很好。

由于我想将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.

2 个答案:

答案 0 :(得分:2)

此声音就好像您的foregroundView userInteractionEnabled设置为NO。这并不仅仅意味着foregroundView没有接收到触摸事件 - 它的任何子视图都没有。见How to get touches when parent view has userInteractionEnabled set to NO in iOS。 (简答:你不能。)

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

如果foregroundView实施了自己的hitTest:withEvent:,它还可以阻止与其子视图的互动。

答案 1 :(得分:0)

尝试在 viewWillAppear:

中执行此操作
[desiredField becomeFirstResponder];

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