【问题标题】:how to make textfield changes appear in two different views?如何使文本字段更改出现在两个不同的视图中?
【发布时间】:2011-04-05 19:25:11
【问题描述】:

我有一个类,我在其中使用了文本字段委托方法“shouldChangeCharactersInRange”。如果用户在一个视图的文本字段中键入内容,我希望这些更改出现在不同视图的文本字段中。 现在,我有两个具有相同文件所有者的 xib 文件,并且我在每个 xib 文件中建立了与我的文本字段(我声明为 IBOutlet)的连接(在 IB 中)。这是一个 Ipad 应用程序,所以当用户旋转设备时我会在视图之间切换。 它还没有工作,所以我一定错过了什么?有人可以帮帮我吗!谢谢你! 如果这个问题不清楚,请告诉我。

【问题讨论】:

  • 您应该编辑您的问题并在 shouldChangeCharactersInRange 方法中添加您所拥有的内容。这样我们就可以看到你在说什么。
  • 我明白你的意思,但我不认为这种方法会发生什么,我只想在我的其他文本字段中发生同样的事情。
  • 你知道他们说一张照片值一千字吗?好吧,它的价值是 10 倍。

标签: objective-c cocoa-touch interface-builder uitextfield


【解决方案1】:

无论你的 shouldChangeCharactersInRange: 方法在哪里实现,如果你有两个文本字段的引用,你可以做的是设置两者的文本。所以现在你有类似的东西:

- (BOOL)textField: (UITextField *)textField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string
{
    if (textField.text.length >= MAX_LENGTH && range.length == 0)
    {
        return NO; 
    }
    else
    {
        return YES;
    }
}

你想添加类似的东西:

- (BOOL)textField: (UITextField *)textField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string
{
    if (textField.text.length >= MAX_LENGTH && range.length == 0)
    {
        return NO; 
    }
    else
    {   
        [myFirstTextField setText:string];
        [mySecondTextField setText:string];
        return YES;
    }
}

如果您将两个文本字段都设置为委托给该单个函数,您甚至不需要关心那里委托给您的是谁。无论是谁输入了文本,您要执行的操作都是相同的。

【讨论】:

  • 我只有一个文本字段名称,因为在我的两个 xib 文件中,我的两个文本字段都连接到相同的名称并具有相同的委托和标签。
  • 没关系 - 即使它们具有相同的名称,您仍然有 2 个单独的对象。它们被实例化是因为它们位于单独的 xib 中。他们叫什么并不重要。重要的是,您可以将他们每个人的 REFERENCE 回传给他们的代表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2018-09-29
相关资源
最近更新 更多