Привет Я использую этот код для перемещения своего представления при выборе textView, чтобы убедиться, что мой texView виден, когда клавиатура всплывает.Как перемещать представление, если выбран только определенный textView
override func viewDidLoad() {
super.viewDidLoad() NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: self.view.window)
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: self.view.window)
}
func keyboardWillHide(sender: NSNotification) {
let userInfo: [NSObject : AnyObject] = sender.userInfo!
let keyboardSize: CGSize = userInfo[UIKeyboardFrameBeginUserInfoKey]!.CGRectValue.size
self.view.frame.origin.y += keyboardSize.height
}
func keyboardWillShow(sender: NSNotification) {
let userInfo: [NSObject : AnyObject] = sender.userInfo!
let keyboardSize: CGSize = userInfo[UIKeyboardFrameBeginUserInfoKey]!.CGRectValue.size
let offset: CGSize = userInfo[UIKeyboardFrameEndUserInfoKey]!.CGRectValue.size
if keyboardSize.height == offset.height {
if self.view.frame.origin.y == 0 {
UIView.animateWithDuration(0.1, animations: {() -> Void in
self.view.frame.origin.y -= keyboardSize.height
})
}
} else {
UIView.animateWithDuration(0.1, animations: {() -> Void in
self.view.frame.origin.y += keyboardSize.height - offset.height
})
}
print(self.view.frame.origin.y)
}
override func viewWillDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: self.view.window)
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: self.view.window)
}
Как я только переместить вид, если выбран нижний TextView? Поскольку в настоящее время, если вы выбираете самый верхний textView, он перемещает половину его с экрана.
Я ценю любую помощь, спасибо заранее.
Если ваш 'UITextView' не будет иметь вертикальную прокрутку, почему бы вам не вставлять их (и любой другой контент) в одно прокрутку, что позволяет прокручивать весь экран? Таким образом, вы можете прокручивать представление прокрутки вместо настройки кадров отдельного вида. Что касается дифференциации 'UITextField', используйте методы делегата, как предлагает @ konrad.bajtyngier. – paulvs