按下标准数字键盘时清除UITextField

时间:2010-05-18 15:39:21

标签: iphone objective-c xcode uitextfield

如果我在标题中没有充分解释我的问题,我很抱歉。

在我的应用程序中,我使用一个小的子视图在屏幕的顶部创建一个非常基本的计算器(我只有一个UITextField来显示操作和两个按钮)。我没有使用自定义键盘,而是想使用标准的iPhone数字键盘。

我的问题是,在进行操作(例如添加两个数字)并显示结果后,我无法弄清楚当用户输入新号码时如何清除屏幕。

所以,例如:

  • 用户输入“6” - >编号6显示在UITextField
  • 用户选择“+” - >清除UITextField以为下一个号码腾出空间
  • 用户输入“10” - >编号10显示在UITextField
  • 用户选择“+” - > 16显示为前一操作的结果,并应保持在那里直到按下另一个数字(他想继续添加更多数字)

  • 用户输入“5”

此时,如果我使用自定义键盘,我可以在用户按下“5”按钮后立即清除UITextField,但在使用标准数字键盘时我无法弄清楚如何操作。所以,我现在得到的结果是“165”。

有没有办法检测何时在标准数字键盘中按下某个键,以便在新号码出现之前我可以清除UITextField?我认为可能存在NSNotification,但我找不到它。

我知道如果我创建了一个自定义键盘,或者我使用了两个独立的UITextFields(一个用于操作,另一个用于总计),我可以解决我的问题,但我想使用标准数字键盘这是可能的。

非常感谢!

1 个答案:

答案 0 :(得分:1)

设置UITextField的委托并使用shouldChangeCharactersInRange:replacementString:

这将捕获每个按键,使您可以按照自己的意愿行事。见

http://developer.apple.com/iphone/library/documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html#//apple_ref/occ/intfm/UITextFieldDelegate/textField:shouldChangeCharactersInRange:replacementString

如果我理解你的话应该覆盖它。