如何在没有键盘的情况下通过某种方式填充文本时检查uitextfields文本?

时间:2013-12-09 05:58:31

标签: ios uitextfield

我遇到了UITtextfield文字问题。它是一个拆分视图应用程序,详细信息视图是具有自定义单元格的表视图。在自定义单元格中,我有一个文本字段,当我点击文本字段时,它将导航到另一个包含值列表的表,我需要从中选择一个值。

我的问题是当我在主视图中点击一行时,我需要检查是否有任何文本字段的文本发生了变化。如果是,我正在向用户显示警告视图,说“有些更改是否要保存?”。

2 个答案:

答案 0 :(得分:0)

用户UITextFieldDelegate

试试这个:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(methodNothing)
 name:UITextFieldTextDidChangeNotification object:myTextField];

您可以使用:UITextFieldTextDidBeginEditingNotificationUITextFieldTextDidEndEditingNotification

答案 1 :(得分:0)

您可以为NSTextField实例设置委托,并让委托实现以下方法:

- (void)controlTextDidChange:(NSNotification *)notification 
{
    // there was a text change in some control
}

您的委托对象可以是应用程序委托,窗口控制器,视图控制器或应用程序中的某个其他对象。代理可以通过编程方式设置

[myTextField setDelegate:delegateObject];

或在Interface Builder中,通过NSTextField控件中的代理插座。

请注意,如果有多个控件挂钩到同一个委托,那么将为每个控件发送-controlTextDidChange:,即为不同的控件调用相同的方法。如果根据文本更改的控件需要不同的行为,可以使用 - [NSNotification对象]来标识已发送通知的控件。

例如,如果您有两个带有相应出口nameField和addressField的文本字段,并且您为这两个字段设置了相同的委托,那么:

- (void)controlTextDidChange:(NSNotification *)notification {
    // there was a text change in some control
    // [notification object] points to the control that has sent
    // the notification

    if ([notification object] == nameField) {
        // nameField has changed
    }
    else if ([notification object] == addressField) {
        // addressField has changed
    }
}

或者,您可以为每个文本字段设置一个代理。在这种情况下,无需测试[notification object].