2017-08-02 45 views
0

首先,我没有任何故事板,一切都是编程式的。我有三个TextField,其中一个隐藏(isHidden = true)在登录按钮后面,登录按钮下面是一个注册按钮。如果点击注册按钮,登录按钮在注册按钮下滑动,隐藏的textField将其isHidden属性设置为false。隐藏的textField无法在isHidden之后选择设置为false

我现在的问题是,当点击注册按钮登录按钮向下移动,文本框显示,但不能被选中,当我尝试选择它时,登录按钮快速恢复到原来的位置。

我也有视图移动时,键盘显示和再次下来,我不认为这是帮助。

的TextField:

class SplitterTextField: UITextField, UITextFieldDelegate { 

    var accessID: String! 

    required init(frame: CGRect, accessID: String) { 
     super.init(frame: frame) 
     self.accessID = accessID 
     setup() 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 

    private func setup() { 
     delegate = self 
     backgroundColor = Color.textFieldBackground 
     accessibilityIdentifier = accessID 
     textAlignment = .center 
     returnKeyType = .done 
     placeholder = NSLocalizedString("\(accessID!)PlaceHolder", comment: "") 
    } 

    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     resignFirstResponder() 
     return true 
    } 
} 

移动按钮功能:

@objc private func registerButtonTapped() { 
    if confirmPasswordTextField.isHidden { 
     animateLoginButton() 
    } else { 
     registerNewUser() 
    } 
} 


@objc private func loginButtonTapped() { 
    if !confirmPasswordTextField.isHidden { 
     animateLoginButton() 
    } else { 
     //segue to next vc 
    } 
} 

private func animateLoginButton() { 
    if confirmPasswordTextField.isHidden { 
     moveLoginButtonDown() 
    } else { 
     moveLoginButtonUp() 
    } 
} 

private func moveLoginButtonDown() { 
    //Move loginButton down revealing confirmationPasswordTextView behind it 
    UIView.animate(withDuration: 0.3, animations: { 
     self.loginButton.frame.origin.y += Layout.loginButtonYMovement 
     self.confirmPasswordTextField.isHidden = false 
    }) 
} 

private func moveLoginButtonUp() { 
    //Move the loginButton up, when it has finished moving hide the confirmationPasswordTextView 
    UIView.animate(withDuration: 0.3, animations: { 
     self.loginButton.frame.origin.y -= Layout.loginButtonYMovement 
    }, completion: { _ in 
     self.confirmPasswordTextField.isHidden = true 
    }) 
} 

视图控制器键盘功能:

func setupKeyboard() { 
     NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(sender:)), name: NSNotification.Name.UIKeyboardWillShow,object: nil) 
     NotificationCenter.default.addObserver(self,selector: #selector(keyboardWillHide(sender:)),name: NSNotification.Name.UIKeyboardWillHide,object: nil) 

} 

@objc private func keyboardWillShow(sender: NSNotification) { 
    self.view.frame.origin.y = Layout.welcomeScreenKeyboardMovement 
} 

@objc private func keyboardWillHide(sender: NSNotification) { 
    self.view.frame.origin.y = 0 
} 

任何建议,将不胜感激。谢谢,让我知道是否有更多需要的上下文。所有视图都使用约束固定,并且不会发生涉及约束的错误。

+1

当按下注册按钮时添加这行代码。 self.view.bringSubview(toFront:confirmPasswordTextField)然后尝试选择该字段。 –

+0

令人惊叹的感谢! textField的作品,但现在增加,现在使登录按钮跳起来,并滑落在新显示的文本字段后面。有任何想法吗? – Wazza

+0

@WyneRumble在按下注册按钮时,您必须对所有字段执行相同的操作。也必须相应地设置按钮的框架,以便它们不会与彼此混淆。 –

回答

1

当按下注册按钮时添加这行代码。

self.view.bringSubview(toFront: confirmPasswordTextField) 

然后尝试选择该字段。 正确设置框架按钮,以免互相混淆。 您可以打印按钮框以便更好地理解。

+0

非常感谢:) – Wazza

+0

最受欢迎:) –

相关问题