2015-08-06 4 views
0

Я новичок в разработке с быстрым и не знаю, как решить мою проблему. У меня есть две точки зрения. Один для signUp и один для signIn. Я добавил следующие функции в мои контроллеры просмотра, и все работает нормально. Когда я нажимаю на каждый textField (для пароля, имя пользователя), представление перемещается вверх при появлении клавиатуры. Но когда я подписываюсь на пользователя, и после этого вызова «Часть 2» моего кода и Пользователь вошел в систему, вид меняется с моего signInView на мой signUpView. Проблема: после того, как я сделал следующие шаги и сейчас на вкладке textFields, клавиатура больше не отображается.быстрый вид движения при появлении клавиатуры - ошибка

Часть 1: Код в signInViewController:

var kbHeight: CGFloat! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    textFieldUserName.delegate = self 
    txtFieldUserPassword.delegate = self 
} 

func textFieldShouldReturn(textField: UITextField) -> Bool { 
    txtFieldUserPassword.resignFirstResponder() 

    return true 
} 

//viewDidAppear or viewWillAppear? 
override func viewDidAppear(animated:Bool) { 
    super.viewWillAppear(animated) 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil) 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil) 
} 

override func viewWillDisappear(animated: Bool) { 
    super.viewWillDisappear(animated) 

    NSNotificationCenter.defaultCenter().removeObserver(self) 
} 

func keyboardWillShow(notification: NSNotification) { 
    if let userInfo = notification.userInfo { 
     if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() { 
      kbHeight = keyboardSize.height-50 
      self.animateTextField(true) 
     } 
    } 
} 

func keyboardWillHide(notification: NSNotification) { 
    self.animateTextField(false) 
} 

func animateTextField(up: Bool) { 
    let movement = (up ? -kbHeight : kbHeight) 

    UIView.animateWithDuration(0.3, animations: { 
     self.view.frame = CGRectOffset(self.view.frame, 0, movement)  //Fatal Error: nil sometimes? - Why? 
    }) 
} 

Часть 2: Код в signInViewController

do { 
     try signup.signUpUser() 
     self.showAlert(self) 
} catch ... 


func showAlert(viewController : UIViewController) -> Void { 

    let alertController = UIAlertController(title: "Registrieren erfolgreich", message: "Sie können sich jetzt Anmelden", preferredStyle: .Alert) 

    alertController.addAction(UIAlertAction(title: "Anmelden", style: .Default, handler: { (alertAction) -> Void in self.dismissViewControllerAnimated(true, completion: nil) })) 

    viewController.presentViewController(alertController, animated: true, completion: nil) 

ответ

1

Я использую это удобное решение под названием TPKeyboardAvoiding в одном из моих приложений: https://github.com/michaeltyson/TPKeyboardAvoiding

С в этой библиотеке вам не нужно управлять этим видом поведения прокрутки в вашем приложении, представьте, что вы можете иметь другое поведение в других VC, и вам нужно вычислить это каждый раз.

+0

Это действительно не помогает мне .. это объективный код c, и представление движется динамически. я хочу сказать сам, насколько должна двигаться точка зрения – BEm

Смежные вопросы