([textField.text length] > 0)
事。
但是我希望用户必须在两个textFields中编写字符串才能最终启用“Done”-Button。
我之前解决了这个问题,但只有一个文本字段使用以下UITextFieldDelegate
方法。
- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *newText = [theTextField.text stringByReplacingCharactersInRange:range withString:string];
self.doneBarButton.enabled = ([newText length] > 0);
return YES;
}
我对新问题的解决方案,现在有两个textField就是这个:
- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *newText = [theTextField.text stringByReplacingCharactersInRange:range withString:string];
if ([theTextField.placeholder isEqualToString:@"textField1"]) {
if ([theTextField.text length] > 0) {
enabledVokabel = YES;
} else {
enabledVokabel = NO;
}
}
if ([theTextField.placeholder isEqualToString:@"textField2"]) {
if ([theTextField.text length] > 0) {
enabledUebersetung = YES;
} else {
enabledUebersetung = NO;
}
}
self.doneBarButton.enabled = (enabledVokabel && enabledUebersetung);
return YES;
}
所以我希望在textFields(textField1和textField2)都填充文本时启用doneBarButton。但我希望这样,如果用户删除了他/她刚刚在doneBarButton中写的文本,一旦textFields为空,就会被禁用。 它不起作用。你有解决方案吗?或者也许是一种更好的解决方法?
答案 0 :(得分:2)
要么将interfacebuilder中更改的值更改为视图中任何类中的IBAction方法。或者您可以使用以下代码执行此操作:
[textField addTarget:self
action:@selector(myIBActionMethod:)
forControlEvents:UIControlEventEditingChanged];
并检查输入的长度。
你可以将两个文本字段连接到同一个方法,并在每次调用时检查两个文本字段的长度,如果你有两个文本字段的话。
答案 1 :(得分:0)
我会为UITextViews
保留一个参考,让我们说.-
IBOutlet UITextView *textView1;
IBOutlet UITextView *textView2;
与xib/storyboards
正确关联。另外,我宁愿使用
- (void)textViewDidChange:(UITextView *)textView
回调。根据{{3}}文档,看起来在实际更改文本之前调用此方法。
对于enabled
条件,它看起来像这样.-
self.doneBarButton.enabled = [textView1.text length] > 0 && [textView2.text length] > 0;