Ios 当键盘显示一个文本视图而不是另一个文本视图时,如何移动视图
我在顶部有一个UITextView,中间有一个UITextView,底部有一个UITextView。 如果使用底部UITextView或中间UITextView,我想在键盘显示时向上移动视图,但使用顶部UITextView时,视图不应移动 我该怎么做Ios 当键盘显示一个文本视图而不是另一个文本视图时,如何移动视图,ios,swift,xcode,uiview,uitextview,Ios,Swift,Xcode,Uiview,Uitextview,我在顶部有一个UITextView,中间有一个UITextView,底部有一个UITextView。 如果使用底部UITextView或中间UITextView,我想在键盘显示时向上移动视图,但使用顶部UITextView时,视图不应移动 我该怎么做 func showLoginKeyBoard() { NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIR
func showLoginKeyBoard()
{
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
}
@objc func keyboardWillShow(notification: NSNotification)
{
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue
{
if self.view.frame.origin.y == 0
{
self.view.frame.origin.y -= keyboardSize.height
}
}
}
func textViewDidBeginEditing(_ textView: UITextView)
{
if textView == centreTextView
{
showLoginKeyBoard()
}
if textView == bottomTextView
{
showLoginKeyBoard()
}
}
当前,当任何UITextView成为第一响应者时,视图会向上移动,这意味着在使用顶部UITextView时,视图不可见
如何确保顶部UITextView不会向上移动视图?在回答您的问题之前, 根据你的代码,每次用户点击文本视图,你就可以添加观察者。不要这样做。在viewDidLoad()中添加观察者,不要忘记在ViewDidEnglishe()中删除观察者。否则会导致内存泄漏 现在,回答问题 定义fileprivate可选文本视图
var currentTextView:UITextView?
然后在textViewDidBeginEditing中指定textField
func textViewDidBeginEditing(_ textView: UITextView){
currentTextView = textView
}
现在您可以根据currentTextView显示或不显示
@objc func keyboardWillShow(notification: NSNotification){
if let txtView = currentTextView{
txtView != topTextView {
//move up the view
}
}
}
我建议使用IQKeyboardManager库,它只需一行代码即可处理所有键盘事件我仍在尝试更改所有代码,以使其正常工作,因为我有showLoginKeyboard()和键盘将一起显示在UIViewController扩展中,因为此设置有3个控制器,顶部和底部控制器是自定义类。