我遇到了UITtextfield
文字问题。它是一个拆分视图应用程序,详细信息视图是具有自定义单元格的表视图。在自定义单元格中,我有一个文本字段,当我点击文本字段时,它将导航到另一个包含值列表的表,我需要从中选择一个值。
我的问题是当我在主视图中点击一行时,我需要检查是否有任何文本字段的文本发生了变化。如果是,我正在向用户显示警告视图,说“有些更改是否要保存?”。
答案 0 :(得分:0)
试试这个:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(methodNothing)
name:UITextFieldTextDidChangeNotification object:myTextField];
您可以使用:UITextFieldTextDidBeginEditingNotification
或UITextFieldTextDidEndEditingNotification
答案 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].