У меня есть UIViewController
с двумя встроенными контейнерами и одним текстовым полем. Пока пользователь набирает текстовое поле, весь экран движется вверх, поэтому клавиатура может поместиться, не закрывая нижнюю часть контейнеров. Вот как это выглядит в моей раскадровку:Как я могу переместить мой контейнер вверх, когда пользователь быстро отображает экранную клавиатуру?
Мой код выглядит следующим образом:
override func viewDidLoad() {
super.viewDidLoad()
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
// view.addGestureRecognizer(tap)
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillChangeFrameNotification, object: nil)
}
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
if(isKeyboardShown == false){
realKeyboardSize = CGRect(x: keyboardSize.origin.x, y: keyboardSize.origin.y, width: keyboardSize.width, height: keyboardSize.height)
isKeyboardShown = true
self.view.frame.origin.y -= realKeyboardSize!.height
}else{
isKeyboardShown = false
self.view.frame.origin.y += realKeyboardSize!.height
}
}
}
Можно ли перемещать нижний контейнер вверх, а не на весь экран?
Я предполагаю, что это работает так:
topContainer
остается нетронутым, lowerContainer
перемещается вверх так, что половина из них скрывается за topContainer
и клавиатура видна. Когда пользователь скрывает клавиатуру, все возвращается к норме.
Вы используете проверку автозапуска http://stackoverflow.com/questions/31356293/uitableview-and-uiview-with-keyboardwillshow/31356527#31356527 –
спасибо, я сделал то, что вы предложили и добавил эти строки в viewDidLoad: 'NSNotificationCenter.defaultCenter(). addObserver (self, selector: Selector (" keyboardWillShow: "), name: UIKeyboardWillShowNotification, object: nil) NSNotificationCenter.defaultCenter(). addObserver (self, selector: Selector (" keyboardWillHide : "), name: UIKeyboardWillHideNotification, object: nil)' Но теперь, когда я нажимаю текстовое поле, он полностью исчезает :) Я попытался добавить только 'keyboardWillShow', а затем контейнер перемещается вверх, но я не вижу собственно клавиатуру. . – user3766930
hm теперь появляется клавиатура, но экран не перемещается вверх. Однако, когда я скрываю клавиатуру, экран немного уменьшается, и текстовое поле исчезает. Вы знаете, что может быть проблемой здесь? – user3766930