2016-08-17 2 views
1

поэтому я показывать кнопку на верхней части моей клавиатуры, когда клавиатура появляется, а затем скрывается, когда клавиатура разогнала, но поток анимации не достаточно гладкаяплавно скрывать и показывать кнопку в зависимости от наличия клавиатуры

я хочу это прийти вверх и вниз с клавиатуры (без блокировки UI)

изображения:

КОГДА ПОЯВЛЯЕТСЯ кЛАВИАТУРА, можно увидеть, что кЛАВИАТУРА ЕЩЕ нЕ Fullly ПОЯВИЛСЯ НО МОЯ кНОПКА ЗДЕСЬ

enter image description here

И КОГДА СКРЫВАЕТ, еще не полностью разогнали, но КНОПКА GONE

enter image description here

мой код:

КОД:

viewDidLoad ...... { 
     // here we have notification observers for tracking the states of Keyboard 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(LaunchScreenViewController.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil) 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(LaunchScreenViewController.keyboardWillHide(_:)), name: UIKeyboardWillHideNotification, object: nil) 

} 


    func keyboardWillShow(notification:NSNotification) { // in this function i'm changing the origin (Y) axis of my button os that it can appear on top of my keyboard 
    let userInfo:NSDictionary = notification.userInfo! 
    let keyboardFrame:NSValue = userInfo.valueForKey(UIKeyboardFrameEndUserInfoKey) as! NSValue 
    let keyboardRectangle = keyboardFrame.CGRectValue() 
    UIView.animateWithDuration(0.3) { 

     self.nextButtonConstraint.constant = keyboardRectangle.height 
    } 
} 

func keyboardWillHide(notification:NSNotification) { 
    UIView.animateWithDuration(0.5) { 

     self.nextButtonConstraint.constant = -50 // here i'm making my button out of screen bounds 
    } 
} 

ответ

1

Вы должны применять правильная анимация:

self.nextButtonConstraint.constant = keyboardRectangle.height 
UIView.animateWithDuration(0.3) { 
    <outlet to nextButton>.layoutIfNeeded() // insert correct value in <> 
} 

И не используйте 0.3, но принимать TimeInterval от UIKeyboardAnimationDurationUserInfoKey

+0

эй человек его прекрасно работать, но что с 'UIKeyboardAnimationDurationUserInfoKey' ?? –

+0

вы получаете точное времяInterval для анимации появления клавиатуры (обычно 0,25) – Igor

+0

, но как получить его из 'UIKeyboardAnimationDurationUserInfoKey'? его строка правильная? 'public let UIKeyboardAnimationDurationUserInfoKey: String // NSNumber double' –

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