触摸UITextField时显示子视图

时间:2011-09-26 18:47:04

标签: iphone uitextfield subview addsubview

我对iPhone开发很新,所以请原谅我的无知。我用谷歌搜索了一下,到目前为止没有任何用处。这就是我想做的事情:

我希望在触摸UITextField时弹出一个子视图(在后台显示其余部分)。弹出窗口是我在IB中创建的计算器UIView。由于Apple的开发人员指南,似乎有一个弹出式节目比自定义键盘更好。

这是我的问题。如何捕获UITextField上的触摸以及如何显示子视图?

我尝试过以下内容来显示子视图,但没有运气:

    CustomCalculator *customCalc = [[CustomCalculator alloc] initWithNibName:@"CustomCalculator" bundle:nil];

UIViewController *calcController = [self.customCalc.view];

[self.view addSubview:calcController.view];

2 个答案:

答案 0 :(得分:1)

使用委托方法:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
   //Add your subview here 

   return NO; //this will stop the keyboard from poping up
  }

这样,当有人点击文本字段时,您的视图将弹出而不是键盘。 现在,一旦用户与您的视图交互,您将不得不直接操作textfield.text属性中的字符串作为对视图中用户点击按钮的反应。

答案 1 :(得分:0)

实现UITextFieldDelegate,其方法为

-(void) textFieldDidBeginEditing:(UITextField *)textField

触摸UITextField时会触发上述方法。然后你可以定位UIPopoverController(我猜这就是你用来在弹出窗口中显示视图的东西),一旦完成,就会将值传递回UITextField。因此,popover的/ viewcontroller呈现的委托应该是你的文本字段对象。

编辑:看到下面的另一个答案后,我惊讶地发现我忘了告诉你如何阻止键盘显示。把它作为我上面提到的方法的第一行:

    [textField resignFirstResponder];