У меня есть класс ниже. Я в основном добавляю NSNotification, чтобы проверить, работает ли клавиатура. Если клавиатура вставлена, я меняю рамку кнопки, чтобы найти ее поверх клавиатуры. Думаю, я сделал это правильно, но кнопка, по-видимому, не двигается. В чем может быть проблема?Перемещение UIButton, когда клавиатура всплывает
class vc: UIViewController {
var previousButton: UIButton!
var nextButton: UIButton!
override func viewDidLoad() {
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)
previousButton = UIButton(frame: CGRectMake(margin + 20, containerView.frame.size.height + 10, 80, 30))
previousButton.setImage(UIImage(named: "previous"), forState: .Normal)
previousButton.addTarget(self, action: "previousButtonPressed2:", forControlEvents: .TouchUpInside)
nextButton = UIButton(frame: CGRectMake(self.view.frame.width - margin - 80 - 20, containerView.frame.size.height + 10 , 80, 30))
nextButton.setImage(UIImage(named: "next"), forState: .Normal)
nextButton.addTarget(self, action: "nextButtonPressed2:", forControlEvents: .TouchUpInside)
self.view.addSubview(previousButton)
self.view.addSubview(nextButton)
}
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
previousButton = UIButton(frame: CGRectMake(10 + 20, self.view.frame.size.height - keyboardSize.height - 40, 80, 30))
}
}
func keyboardWillHide(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
previousButton = UIButton(frame: CGRectMake(10 + 20, self.view.frame.size.height - 40, 80, 30))
}
}
}
Я пробовал это, и нет никакой разницы, к сожалению. – Kahsn
Можете ли вы рассказать мне, как 'height' (вы используете свойство' keyboardSize.height') реализуется в 'CGRect'? Я предполагаю, что вы добавили расширение - Можете ли вы проверить, что он работает правильно? –
Высота правильно реализована в типе CGRect. Он просто вычисляется из переменной keyboardSize в моем коде. – Kahsn