2012-04-20 56 views
1

我很想做一些事情來在用戶匹配兩個文本字段時以可視方式獎勵用戶。這是jQuery-esque,我不確定在Objective-C/Xcode中是否可能。這裏的關鍵是「作爲他們的類型」。當密碼/ confirmPassword(主要是因爲安全字段格式化•••••)或電子郵件/ confirmEmail表單字段匹配或變爲紅色「X」時,某些基於Web的用戶帳戶設置表單顯示綠色複選框他們的比賽。Objective-C/Xcode - 作爲用戶類型的密碼檢查

Objective-C/Xcode中是否有類似onKeystroke事件?

我願意研究和學習這個。我只是不知道如何正確引用這種類型的功能。你想

+0

不是Xcode的問題。 – Almo 2012-04-20 20:17:19

+0

我應該編輯它來引用Obj-C嗎?我的意思是,我使用Xcode。 – TSNev 2012-04-20 20:19:15

+0

Mac或iOS?請稍微精確一點;) – 2012-04-20 20:25:09

回答

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 
+0

謝謝,盧克。我很欣賞這個。我會檢查出來的。 – TSNev 2012-04-20 20:25:44

+1

我不會使用鍵控 - 即使沒有用戶交互,該值也可以在沒有鍵盤事件的情況下更改。 – 2012-04-20 20:29:21

+0

覆蓋'keyUp:'需要對'NSTextField'進行子類化,並獲得原始鍵事件,然後您需要自己處理文本 - 這是一項不重要的任務。這裏的正確路線是['NSTextFieldDelegate'](http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSTextFieldDelegate_Protocol/Reference/Reference.html)或['NSTextDelegate']( http://developer.apple.com/library/mac/documentation/Cocoa/Reference/NSTextDelegate_Protocol/),文本確實會改變通知方法。 @TSNev – 2012-04-20 20:59:54

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 
    } 
} 
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 
     } 
    }