2010-05-18 49 views
0

如果我在标题中没有足够好地解释我的问题,我很抱歉。在我的应用程序中,我使用一个小的子视图在屏幕的顶部创建一个非常基本的计算器(我只有一个显示操作和两个按钮的UITextField)。我不想使用自定义键盘,而是使用标准的iPhone数字键盘。按下标准数字键盘时清除UITextField

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

所以,例如:

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

  • 用户输入“5”

在这一点上,如果我使用的是自定义的键盘,我会尽快清除的UITextField的按钮“5”是由用户按下,但我不能找出使用标准数字键盘时的操作方法。所以,我现在得到的结果是“165”。

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

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

非常感谢!

回答

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

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

+0

解决了这个问题!其实我已经使用“shouldChangeCharactersInRange:replacementString:”进行其他检查,但出于某种原因,在处理此问题时没有考虑它。非常感谢! – Manu 2010-05-18 20:56:27