嘿伙计们,我正在尝试在 UITextView 变空时启动一个事件。我有一个问题,当 textview 变空时如何触发动作。我的意思是每当 UITextView 变空时,下面的 func 就会被执行
-(void)textViewIsEmpty
{
NSLog(@"Text View Is Empty");
}
为了自动检测 textView 现在是空的,我遇到了问题。提前致谢。
嘿伙计们,我正在尝试在 UITextView 变空时启动一个事件。我有一个问题,当 textview 变空时如何触发动作。我的意思是每当 UITextView 变空时,下面的 func 就会被执行
-(void)textViewIsEmpty
{
NSLog(@"Text View Is Empty");
}
为了自动检测 textView 现在是空的,我遇到了问题。提前致谢。
自从提出这个问题以来,事情可能已经发生了变化,但我想贡献我的答案,因为我正在做类似的事情。
从 Xcode 5 开始,您只需要创建一个方法并将其与Editing Changed
Sent Event 相关联。
在我的课堂上,我创建了一个返回的方法IBAction
:
- (IBAction)priceFieldEdited:(id)sender {
[self refreshFetchedResultsAndTable];
}
然后,我需要做的就是右键单击拖动到类并选择方法。
为名称添加通知观察者UITextFieldTextDidChangeNotification
:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(textFieldDidChanged:)
name:UITextFieldTextDidChangeNotification
object:self.yourTextField];
textFieldDidChanged:
是在文本字段发生更改时管理操作的自定义方法。您可以在那里判断文本字段的长度。
编辑:
示例代码textFieldDidChanged:
:
- (void)textFieldDidChanged:(NSNotification *)notification {
if (self.yourTextField.length)
return;
[self textFieldIsEmpty];
}
使用textFieldDidEndEditing委托方法。
- (void)textFieldDidEndEditing:(UITextField *)textField
{
if([textField.text stringByReplacingOccurrencesOfString:@" "
withString:@""].length >0)
NSLog(@"Text Field Is Empty");
//or perform selector textFieldIsEmpty
}
为UITextFieldTextDidChangeNotification名称添加通知观察者:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(textFieldChanged:)
name:UITextFieldTextDidChangeNotification
object:self.yourTextField];
选择器将是这样的:
-(void)textFieldChanged:(NSNotification*)notification
{
UITextField *txt = (UITextField *)[notification object];
if([txt.text stringByReplacingOccurrencesOfString:@" "
withString:@""].length >0)
NSLog(@"Text Field Is Empty");
}
编辑:不需要时删除通知:
[[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:nil];
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSRange textFieldRange = NSMakeRange(0, [textField.text length]);
if (NSEqualRanges(range, textFieldRange) && [string length] == 0) {
// Game on: when you return YES from this, your field will be empty
}
return YES;
}
需要注意的是,在此方法返回之前,该字段不会为空,因此您可能希望在此处设置一些中间状态,然后用于textFieldDidEndEditing:
知道用户已清空该字段。
您也可以将此添加到- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;
用这个:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
NSLog(@"RETURN ON KEYBORAD - PRESSED");
if ( ([ textField.text length ] == 0) | ([[textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ] length] == 0))
{
[self textFieldIsEmpty];
return YES;
}
}