2012-06-22 72 views
4

我有2個文本框,用於登錄ID和密碼。 當用戶點擊電子郵件ID時,他們的鍵盤類型是電子郵件和密碼,它是默認的。 他們完成了兩個鍵盤的按鈕,關閉了鍵盤。 我想要做的是,一旦用戶填寫了身份和密碼,他們完成按鈕應改爲「登錄」,我可以執行選擇器的方法登錄。如何更改鍵盤的DONE按鈕,iPhone

這可以做到嗎?

感謝

回答

8

如果使用的是標準的iOS鍵盤,那麼唯一可用的返回鍵類型是

typedef enum { 
    UIReturnKeyDefault,   // 「Return」 
    UIReturnKeyGo,    // 「Go」 
    UIReturnKeyGoogle,   // 「Google」. 
    UIReturnKeyJoin,   // 「Join」. 
    UIReturnKeyNext,   // 「Next」. 
    UIReturnKeyRoute,   // 「Route」. 
    UIReturnKeySearch,   // 「Search」. 
    UIReturnKeySend,   // 「Send」. 
    UIReturnKeyYahoo,   // 「Yahoo」. 
    UIReturnKeyDone,   // 「Done」 
    UIReturnKeyEmergencyCall, // "Emergency Call」. 
} UIReturnKeyType; 

要檢測鍵盤上的keychange,您可以註冊名稱:UITextFieldTextDidChangeNotification。可以說你的文本字段是emailTextField和passwordTextField。

首先,你註冊的通知,檢測在文字輸入

// emailTextField 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(check) 
              name:UITextFieldTextDidChangeNotification 
              object:emailTextField]; 

// passwordTextField 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(check) 
              name:UITextFieldTextDidChangeNotification 
              object:passwordTextField]; 

- (void)check { 
    if ([emailTextField.text length] > 0 && [passwordTextField.text length] > 0) { 
    // Set the return key here, e.g: 
    emailTextField.returnKeyType = UIReturnKeyGo; 
    passwordTextField.returnKeyType = UIReturnKeyGo; 
    } 
    else { 
    // Set the return key here, e.g: 
    emailTextField.returnKeyType = UIReturnKeyNext; 
    passwordTextField.returnKeyType = UIReturnKeyNext; 
    } 
} 

當返回鍵敲擊,它會調用文本框的委託。你可以做這樣的事情:

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    // You can perform selector here, probably after checking if both of the textfields already filled out. E.g: 
    if ([emailTextField.text length] > 0 && [passwordTextField.text length] > 0) { 
     [self performSelector:@selector(login)]; 
    } 

    return YES; 
} 
+0

that worked.But我如何更改返回按鈕的名稱登錄? – FirstTimer

+1

唯一可用的鍵盤返回按鈕是我列在答案上的那些按鈕。如果您想使用自定義文本,則需要使用解決方法@rishi作爲您的問題的評論 - http://mhasantanim.wordpress.com/tutorial/iphone/customize-done-button/ – ewiinnnnn

+0

這適用於我,但只有當你離開現場並回來時,按鈕纔會更新。我嘗試resigningFirstResponder,然後再次成爲FirstResponder,但這不適用於密碼字段。有任何想法嗎? –

3

UITextInputTraits協議定義如下UIReturnKeyType -

typedef enum { 
    UIReturnKeyDefault, 
    UIReturnKeyGo, 
    UIReturnKeyGoogle, 
    UIReturnKeyJoin, 
    UIReturnKeyNext, 
    UIReturnKeyRoute, 
    UIReturnKeySearch, 
    UIReturnKeySend, 
    UIReturnKeyYahoo, 
    UIReturnKeyDone, 
    UIReturnKeyEmergencyCall, 
} UIReturnKeyType; 

針對您的特殊目的,你需要有自定義按鈕,可以查看下面的教程 - http://mhasantanim.wordpress.com/tutorial/iphone/customize-done-button/

1

另外,如果你使用InterfaceBuilder中,您可以選擇您的UITextField並在屬性檢查器中更改「返回鍵」下拉框中的值。

相關問題