1

ユーザーが入力するときに2つのテキストフィールドに一致したときに、ユーザーに視覚的に報酬を与えるために何かをしたいと思います。これはjQuery風であり、Objective-C/Xcodeで可能かどうかはわかりません。ここで重要なのは「ASTHEYTYPE」です。一部のWebベースのユーザーアカウント設定フォームでは、パスワード/ confirmPassword(主に安全なフィールドのフォーマット•••••のため)またはemail / confirmEmailフォームフィールドが一致するか、パスワードが失われると赤い「X」に変わると、緑色のチェックボックスが表示されます。彼らの試合。

Objective-C / XcodeのonKeystrokeイベントに似たものはありますか?

私はこれを研究して学ぶつもりです。このタイプの機能を正しく参照する方法がわかりません。

4

3 に答える 3

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 に答える
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 に答える
0

すべての文字がWebサーバーの帯域幅を消費しすぎる可能性があることを確認するには、ユーザーが入力を停止してから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 に答える