2011-07-14 136 views
2

我知道如果您使用以下代码行,您可以检测用户在TEXT VIEW中输入的内容。检测用户是否输入了UITextField

if ([[textView text] isEqualToString:@"") 

我想检测用户是否在文本FIELD中输入了任何内容,并且这不适用于文本字段。我应该改变什么?谢谢你的帮助!

+1

你似乎缺少一个冒号和一个括号,但除此之外,为什么它不能用于文本字段? – Joe

+0

http://stackoverflow.com/questions/7010547/uitextfield-text-change-event将帮助你检测到变化 – Dejell

回答

11

UITextFieldDelegate是找到此的首选方法。

- (void)textFieldDidBeginEditing:(UITextField *)textField - 这只会告诉你,这已经成为第一个响应者/关键领域,这并不能保证用户修改的值

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string - 当过用户点击一个键这个方法会告诉你要更改文本,“粘贴”将导致多个字符在字符串中,回退一个或删除选择将导致字符串为空,...

- (void)textFieldDidEndEditing:(UITextField *)textField - 这是一个常见的位置来检查该字段中的值与模型中的值进行比较,以查看是否发生了编辑。这只会在字段放弃“关键”状态时被调用,请注意,用户可以点击一个按钮,使得整个视图在被调用之前消失,通常可以用于跟踪您感兴趣的任何字段是否成为“重点领域”(见第一种方法)

它可以是有用的,相关的实施设置断点,以熟悉他们的调用顺序/逻辑

+0

如果我想知道用户是否已经将一个字符插入字段,该怎么办? textFieldDidEndEditing仅在离开字段 – Dejell

+0

时被调用,您需要在第二种方法中记下这一点。 – bshirley

+0

这不是正确的方法。 http://stackoverflow.com/questions/7010547/uitextfield-text-change-event是正确的检测变化 – Dejell

1

通过访问“text”属性,您可以像UITextView一样检索UITextField的内容。下面的代码是如果一个文本字段不是空的。

if (![someTextField.text isEqualToString:@""]) 
    { 
     NSLog(@"someTextField is not empty"); 
    } 

您还可以使用的UITextField委托当用户开始输入检测,停止输入等更多信息有关在文档中使用。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html#//apple_ref/doc/uid/TP40006991

最后,这里给的UITextField文档的链接。 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextField_Class/Reference/UITextField.html#//apple_ref/doc/uid/TP40006888

+0

我试过了,它没有工作。我忘了取消我的文本视图(我正在玩这个视图),我很兴奋,直到我意识到发生了什么。然后我重新链接文本字段,它不工作...此外,用户可以开始键入,然后删除所有内容...谢谢你尝试! –

+0

这是从UITextField获取文本的正确方法。如果它不起作用,那么在你的结尾处有一个错误。 –

0

您可以检查文本长度,而不是内容

if ([[textView text] length]==0) 
相关问题