1

当用户在键入时匹配两个文本字段时,我很乐意做一些事情来在视觉上奖励用户。这是 jQuery 风格的,我不确定在 Objective-C/Xcode 中是否可行。这里的关键是“按他们的类型”。当密码/确认密码(主要是因为安全字段格式••••••)或电子邮件/确认电子邮件表单字段匹配时,一些基于 Web 的用户帐户设置表单会显示一个绿色复选框,如果密码丢失,则会变成红色“X”他们的比赛。

有什么类似于 Objective-C/Xcode 中的 onKeystroke 事件吗?

我愿意研究和学习这个。我只是不知道如何正确引用此类功能。

4

3 回答 3

1

您可以只观察文本字段的值,然后在回调中执行您的逻辑:

[self.textField1 addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventValueChanged];
[self.textField2 addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventValueChanged];

- (void)textChanged:(UITextField *)sender
{
    if ([self.textField1.text isEqualToString:self.textField2.text])
    {
        // passwords match
    }
    else
    {
        // passwords don't match
    }
}
于 2012-04-20T20:28:25.900 回答
1

你想要的一切都在这里https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/HandlingKeyEvents/HandlingKeyEvents.html#//apple_ref/doc/uid/10000060i-CH7-SW1

您正在寻找的是在您的文本视图中实现以下内容并缓冲击键并将它们与您的文本字段进行比较。

- (void)keyUp:(NSEvent *)theEvent
于 2012-04-20T20:22:22.290 回答
0

在每个字符后检查可能会消耗过多的网络服务器带宽,请在用户停止输入 1.4 秒后尝试“计时器”检查。

@property IBOutlet NSSecureTextField *txtPassword;
@property NSThread *syncPasswordTimer;

- (void)awakeFromNib
{
    [super awakeFromNib];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(passwordType) name:NSControlTextDidChangeNotification object:txtPassword];
}

    - (void)passwordType
    {
        [syncPasswordTimer cancel];
        syncPasswordTimer = [[NSThread alloc] initWithTarget:self selector:@selector(passwordTimer) object:nil];
        [syncPasswordTimer start];
    }

    - (void)passwordTimer
    {
        [NSThread sleepForTimeInterval:1.4f];

        if([[NSThread currentThread] isCancelled])
        {
            [NSThread exit];
        }else{
            NSLog(@"'%@'",txtPassword.stringValue);
            //DO THE CHECKING
        }
    }
于 2013-07-09T17:32:46.663 回答