如何收听UIReturnKeyType。下一步使用Swift iOS
当用户按键盘上的“下一步”时,我想从当前UITextField移动到下一个UITextField,UIReturnKeyType设置为UIReturnKeyType。下一步 下面是我如何设置UITextField的如何收听UIReturnKeyType。下一步使用Swift iOS,ios,xcode,swift,Ios,Xcode,Swift,当用户按键盘上的“下一步”时,我想从当前UITextField移动到下一个UITextField,UIReturnKeyType设置为UIReturnKeyType。下一步 下面是我如何设置UITextField的 username.returnKeyType = UIReturnKeyType.Next username.textColor = UIColor.whiteColor() username.placeholder = "Username" username.borderStyle
username.returnKeyType = UIReturnKeyType.Next
username.textColor = UIColor.whiteColor()
username.placeholder = "Username"
username.borderStyle = UITextBorderStyle.RoundedRect
uUsername.textAlignment = NSTextAlignment.Center
username.backgroundColor = UIColor.lightGrayColor()
username.font = UIFont(name: "Avenir Next", size: 14)
username.autocapitalizationType = UITextAutocapitalizationType.None
username.autocorrectionType = UITextAutocorrectionType.No
您必须配置UITextFieldDelegate方法
textFieldShouldReturn:
。在此方法中,您可以检查返回的文本字段,并相应地重新分配第一响应者状态。当然,这意味着您必须将类指定为文本字段的委托
例如:
class MyClass: UITextFieldDelegate {
func setup() { // meaningless method name
textField1.delegate = self
textField2.delegate = self
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
if (textField === textField1) {
textField2.becomeFirstResponder()
} else if (textField === textField2) {
textField2.resignFirstResponder()
} else {
// etc
}
return true
}
}
如果您有两个文本字段: -文本字段1 -文本字段2
func textFieldShouldReturn(textField: UITextField!) -> Bool {
textField1.resignFirstResponder()
textField2.becomeFirstResponder()
return true
}
按照以下步骤操作: 1) 您需要在xib/Storyboard或代码中以文本字段的增量顺序设置标记 2) 为每个文本字段设置委托 3) 然后在视图控制器中粘贴以下代码以达到所需效果:
func textFieldShouldReturn(textField: UITextField) -> Bool
{
let nextTag: Int = textField.tag + 1
let nextResponder: UIResponder? = textField.superview?.superview?.viewWithTag(nextTag)
if let nextR = nextResponder
{
// Found next responder, so set it.
nextR.becomeFirstResponder()
}
else
{
// Not found, so remove keyboard.
textField.resignFirstResponder()
}
return false
}
希望这有帮助 textField1.delegate=self做什么?@StephenFox
delegate
是每个UITextField的属性。为了调用textFieldShouldReturn:
方法,必须将该属性分配给包含该方法的同一类。(它告诉文本字段谁实现了它的委托方法)您可以将此属性设置在与其他属性(如backgroundColor、placeholder等)相同的位置。因此,基本上我告诉编译器textField1是由我所在的当前类委托的?@StephenFox Correct。您必须确保指定类也符合协议(MyClass:UITextFieldDelegatepart),if语句中===的实际含义是什么?我对它不熟悉。
func textFieldShouldReturn(textField: UITextField) -> Bool
{
let nextTag: Int = textField.tag + 1
let nextResponder: UIResponder? = textField.superview?.superview?.viewWithTag(nextTag)
if let nextR = nextResponder
{
// Found next responder, so set it.
nextR.becomeFirstResponder()
}
else
{
// Not found, so remove keyboard.
textField.resignFirstResponder()
}
return false
}