Я создаю пользовательскую клавиатуру для iOS8 и в документах разработчика Apple, в которой говорится, что вы можете изменить высоту пользовательской клавиатуры в любое время после того, как начальный первичный вид рисует на экране. И он говорит, чтобы сделать это, вы должны использовать метод .addConstaint().iOS .addConstraint работает только один раз
Я использую Swift. Начальная высота клавиатуры - 215 пикселей. У меня есть жест, который увеличивает высоту до 350 пикселей. Что работает, как ожидалось. И проведите пальцем вниз, чтобы изменить высоту до 300 пикселей.
Что все работает нормально, но проблема в том, что он работает только один раз. Я прокручиваю вверх, и высота увеличивается, я сажусь вниз, и она уменьшается, но если я снова проведу, ничего не произойдет. Если я прокручу вниз, ничего не произойдет.
Таким образом, я был бы любезен, если бы кто-нибудь мог взглянуть на мои две функции и сказать мне, что я делаю неправильно.
Вот код:
// IBActions
@IBAction func action1(sender: AnyObject) {
if topboxvisible == false {
topboxvisible = true
UIView.animateWithDuration(0.08, delay: 0, options: .CurveEaseIn, animations: {
self.topbox.frame.offset(dx: 0, dy: 40)
}, completion: nil)
}
let expandedHeight:CGFloat = 300
let heightConstraint = NSLayoutConstraint(item:self.view,
attribute: .Height,
relatedBy: .Equal,
toItem: nil,
attribute: .NotAnAttribute,
multiplier: 0.0,
constant: expandedHeight)
self.view.removeConstraint(heightConstraint)
self.view.addConstraint(heightConstraint)
}
@IBAction func action2(sender: AnyObject) {
if topboxvisible == true {
topboxvisible = false
UIView.animateWithDuration(0.08, delay: 0, options: .CurveEaseOut, animations: {
self.topbox.frame.offset(dx: 0, dy: -40)
}, completion: nil)
}
let expandedHeight:CGFloat = 350
let heightConstraint = NSLayoutConstraint(item:self.view,
attribute: .Height,
relatedBy: .Equal,
toItem: nil,
attribute: .NotAnAttribute,
multiplier: 0.0,
constant: expandedHeight)
self.view.removeConstraint(heightConstraint)
self.view.addConstraint(heightConstraint)
}
Консоль пуста, когда я запускаю клавиатуру, даже когда я выдвигаюсь вверх и вниз, чтобы создать ограничения. Также, когда я беру NSLayoutConstraint за пределами IBAction, он говорит, что KeyboardViewController не имеет имени с именем 'view'. Извините, если это ошибка nooby! – Francis
Журнал расширения не может отображаться на консоли, вам нужно увидеть его в окне -> Устройства. – heheBear