1

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

当触摸 UITextField 时,我希望弹出一个子视图(屏幕的其余部分显示在背景中)。弹出窗口是我在 IB 中创建的计算器 UIView。根据 Apple 的开发人员指南,弹出式显示似乎比定制键盘更好。

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

我尝试了以下方法来显示子视图,但没有运气:

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

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

[self.view addSubview:calcController.view];
4

2 回答 2

1

使用委托方法:

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

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

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

于 2011-09-26T19:44:34.407 回答
0

实现 UITextFieldDelegate 和它的方法是

-(void) textFieldDidBeginEditing:(UITextField *)textField

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

编辑:在看到下面的另一个答案后,让我感到震惊的是,我忘了告诉你如何阻止键盘显示。只需将其作为我上面提到的方法的第一行:

    [textField resignFirstResponder];
于 2011-09-26T18:50:27.410 回答