UITextField 在我开始输入时保持/保存值,而无需我点击“完成/保存”按钮

Posted

技术标签:

【中文标题】UITextField 在我开始输入时保持/保存值,而无需我点击“完成/保存”按钮【英文标题】:UITextField to hold/save value as I start typing without having me to hit the "done/save" button 【发布时间】:2014-07-21 15:33:05 【问题描述】:

我正在寻找一种代码,它允许我在开始输入时让我的文本字段保持/保存值。我面临的问题是,如果我选择退出视图控制器而不按键盘上的完成键,UITextField 将设置为先前存储的值。我希望UITextField 在我开始输入时保留/保存该值,这样即使我退出视图控制器,它也会保留该值。

【问题讨论】:

你尝试了什么?这里没有人会为您编写所有此代码 - 您必须表明您已经付出了一些研究努力。你以前尝试过什么?为什么这不起作用? 当用户离开时以编程方式关闭键盘。 我用过 -(BOOL)textField: (UITextField*)textField shouldChangeCharactersInRange: (NSRange) range replacementString: (NSString *) string 如果您正在退出视图,并且希望文本字段的值保持在您离开之前的状态,那么您需要将文本字段的值存储在某处(用户默认值,数据库。 ..). @Nick 是的先生,我使用用户默认设置电子邮件文本字段,但它进入陷阱,我的执行卡住了,没有失败大声笑 【参考方案1】:

您可以在键入时将 textField 值保存在 NSUserDefault 中。并从中检索。

在 ViewDidLoad 中

-(Void) ViewDidLoad

      NSString *textFieldValue = [[NSUserDefaults standardUserDefaults] valueForKey:@"fieldValue"];

      myTextField.text = textFieldValue;
      myTextField.delegate = self;


//UITextField 委托

- (void)textFieldDidEndEditing:(UITextField *)textField
    [NSUserDefaults standardUserDefaults] setValue:myTextField.text forKey:@"fieldValue"];
    [[NSUserDefaults standardUserDefaults] synchronize];


【讨论】:

【参考方案2】:

我没有专门在 ios 上尝试过这个,但是通过实现NSTextFieldDelegate,我能够在我正在开发的 Mac 应用中获得类似的功能。

@interface AppDelegate : NSObject <NSApplicationDelegate, NSTextFieldDelegate>

在 AppDelegate.m 内部,我实现了协议的这一部分:

-(void)controlTextDidChange:(NSNotification *)obj

每次在字段中输入文本时都会运行此函数。

希望这会有所帮助。

【讨论】:

以上是关于UITextField 在我开始输入时保持/保存值,而无需我点击“完成/保存”按钮的主要内容,如果未能解决你的问题,请参考以下文章

在 UITextField 中键入时保持占位符静态

在输入文本时保持居中的同时动态调整 UITextField 大小的正确方法是啥?

不要在 UITextField 返回时关闭键盘

如何在 Swift 中创建 UITextField 对象数组?

UITextField - 当应用程序来自后台时键盘不隐藏

iOS UITextField resignFirstResponder 问题