4

ログインIDとパスワード用に2つのテキストフィールドがあります。ユーザーが電子メール ID をタップすると、キーボードの種類は電子メールになり、パスワードはデフォルトになります。両方のキーボードのボタンを押して、キーボードを閉じます。私がやろうとしているのは、ユーザーがIDとパスワードの両方を入力したら、DONEボタンを「LOGIN」に変更し、セレクターメソッドを実行してログインできるようにすることです。

これは実行可能ですか?

ありがとう

4

3 に答える 3

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;

キーボードのキー変更を検出するには、 name: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;
  }
}

Return キーがタップされると、textfield デリゲートが呼び出されます。次のようなことができます。

- (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;
}
于 2012-06-22T08:10:05.623 に答える
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/

于 2012-06-22T08:03:51.030 に答える
1

また、InterfaceBuilder を使用する場合は、UITextField を選択し、属性インスペクターで [Return Key] ドロップダウン ボックスの値を変更できます。

于 2012-06-22T08:14:02.237 に答える