1

我有一个小问题。我的 TableView 中有两个 textFields 设置对象的属性。为了做到这一点,我想强制用户在字符串被实际设置为对象之前在 textField 中写一些东西。所以基本上是一件简单([textField.text length] > 0)的事情。但我希望用户必须在两个文本字段中都写入字符串才能最终启用“完成”按钮。我早些时候解决了这个问题,但只有一个文本字段使用以下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;
    }

我对新问题的解决方案,所以现在有两个文本字段是这个:

- (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;
}

所以我希望在两个文本字段(文本字段 1 和文本字段 2)都填充文本时启用 doneBarButton。但是我希望这样,如果用户删除了他/她刚刚在 doneBarButton 中写入的文本,则一旦 textFields 为空,就会禁用该文本。它不是那样工作的。你有解决方案吗?或者也许有更好的方法来解决它?

4

2 回答 2

2

要么只是将 interfacebuilder 中更改的值连接到您视图中的任何类中的 IBAction 方法。或者您可以使用以下代码在代码中执行此操作:

[textField addTarget:self 
              action:@selector(myIBActionMethod:) 
    forControlEvents:UIControlEventEditingChanged];

并检查输入的长度。

您可以将两个文本字段连接到相同的方法,并在每次调用时检查两个文本字段的长度,如果您对它们都有 IBOutlets。

于 2013-10-13T16:15:38.890 回答
0

我会为两者保留一个参考UITextViews,让我们说。-

IBOutlet UITextView *textView1;
IBOutlet UITextView *textView2;

正确链接到您的xib/storyboards. 另外,我宁愿使用

- (void)textViewDidChange:(UITextView *)textView

打回来。根据shouldChangeCharactersInRange文档,看起来这个方法是在实际更改文本之前调用的。

至于enabled条件,它看起来像这样。-

self.doneBarButton.enabled = [textView1.text length] > 0 && [textView2.text length] > 0;
于 2013-10-13T11:55:33.737 回答