У меня есть этот код, приведенный ниже, который работает, когда keyboardWillShowNotification называется:неожиданно нашли ноль в то время как разворачивание необязательное значение keyboardWillShow
func keyboardWillShow(_ notification: Notification) {
//ERROR IN THE LINE BELOW
keyboard = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as AnyObject).cgRectValue
animaton = (notification.userInfo?[UIKeyboardAnimationDurationUserInfoKey] as AnyObject).doubleValue
UIView.animate(withDuration: 0.4, animations: {() -> Void in
self.scrollView.frame.size.height = self.scrollViewHeight - self.keyboard.height
})
}
я получаю сообщение об ошибке на второй линии, говоря: unexpectedly found nil while unwrapping an Optional value
. В принципе, всякий раз, когда я нажимаю на один из текстовых полей, это уведомление для клавиатуры будет вызвано, и код в keyboardWillShow
будет запущен. Я знаю, что я ставлю if...let
, но я хочу знать, почему я получаю нуль для этого.
Я не уверен, как я получаю эту ошибку или как ее отлаживать. Это потому, что я запускаю его с симулятора?
Вот что печать notification.userInfo дает:
Дополнительно ([AnyHashable ("UIKeyboardFrameEndUserInfoKey"): NSRect: {{0, 315}, {320, 253}}, AnyHashable ("UIKeyboardIsLocalUserInfoKey «): 1, AnyHashable (« UIKeyboardBoundsUserInfoKey »): NSRect: {{0, 0}, {320, 253}}, AnyHashable (« UIKeyboardAnimationCurveUserInfoKey »): 7, AnyHashable (« UIKeyboardCenterBeginUserInfoKey »): NSPoint: {160, 694.5 }, AnyHashable («UIKeyboardCenterEndUserInfoKey»): NSPoint: {160, 441.5}, AnyHashable («UIKeyboardFrameBeginUserInfoKey»): NSRect: {{0, 568}, {320, 253}}, AnyHashable ("UIKeyboardAnimationDurationUserInfoKey"): 0.25])
Log 'notification.userInfo'. Посмотрите, какие клавиши существуют на самом деле. – rmaddy
О да, дайте мне попробовать. – CapturedTree
Я добавил в свой вопрос, что распечатывается. Это показывает, что доступен 'UIKeyboardFrameEndUserInfoKey'. – CapturedTree