【问题标题】:UITextField Number formatter when setting or editing text设置或编辑文本时的 UITextField 数字格式化程序
【发布时间】:2014-05-20 17:12:31
【问题描述】:

我有 UITextField,我在 textFieldDidEndEditing: 上附加了格式代码。这很好用,但是当我第一次使用文本值 (someTextField.text = @"...") 加载文本字段时,格式不会发生。当然,我可以在那里添加另一个格式化程序,但它似乎有点重复。

有没有办法对 UITextField 进行所有更改,无论是编程的还是用户发起的,自动应用格式?

【问题讨论】:

  • 你试过UITextFieldDidChangeNotification吗?

标签: ios objective-c


【解决方案1】:

只需从两个地方运行相同的方法...

- (void)setTextFieldWithText:(NSString *)text {
    //do formatting here...
    self.textField.text = formattedText;
}

【讨论】:

    【解决方案2】:

    您可以添加 UITextFieldDidChangeNotification 或仅添加一个观察者(使用 addObserver 方法)来观察文本字段的更改。选择适合您的方法。他们俩都削减了重复的代码。 KVO - 与您的问题相关的概念。

    如果您查看以下链接,您可能会有所了解 UITextFieldDidChangeNotification - How do i notify changes in UITextField?

    addObserver 方法 - detecting the change of content of UITextField when the change is not made by the keyboard

      Note: Although the classes of the UIKit framework generally do not support KVO, you can still implement it in the custom objects of your application, including custom views.
    

    【讨论】:

    • 关于注释“虽然 UIKit 框架的类通常不支持 KVO...”的突出显示:文本属性似乎提供了我需要在没有子类化的情况下执行此操作的 KVO。我应该如何解释这个注释?有一天它会在我身上崩溃吗?
    • 该注释用于子类化 UItextView 等等,但由于您不想子类化,您始终可以使用 UITextFieldDidChangeNotification。如果你完全按照它应该的方式实现它,什么都不会崩溃。大多数开发人员使用观察者来观察他们模块中的变化,所以这并不是什么新鲜事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    相关资源
    最近更新 更多