Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何收听UIReturnKeyType。下一步使用Swift iOS_Ios_Xcode_Swift - Fatal编程技术网

如何收听UIReturnKeyType。下一步使用Swift iOS

如何收听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

当用户按键盘上的“下一步”时,我想从当前UITextField移动到下一个UITextField,UIReturnKeyType设置为UIReturnKeyType。下一步

下面是我如何设置UITextField的

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
}