4

我有 2 个文本字段,用于登录 ID 和密码。当用户点击电子邮件 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;

要检测键盘上的 keychange,您可以注册 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;
  }
}

当点击返回键时,它将调用文本字段委托。你可以这样做:

- (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 并在 Attributes Inspector 中更改“Return Key”下拉框的值。

于 2012-06-22T08:14:02.237 回答