【问题标题】:Clear UITextField when standard number pad is pressed按下标准数字键盘时清除 UITextField
【发布时间】:2010-05-18 15:39:21
【问题描述】:

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

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

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

所以,例如:

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

  • 用户输入“5”

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

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

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

非常感谢!

【问题讨论】:

    标签: iphone objective-c xcode uitextfield


    【解决方案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:

    如果我理解正确,应该涵盖它。

    【讨论】:

    • 解决了问题!我实际上已经在使用“shouldChangeCharactersInRange:replacementString:”进行其他检查,但由于某种原因在处理这个问题时没有考虑到它。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 2013-07-03
    • 2022-12-18
    相关资源
    最近更新 更多