ios - UIScrollView 在键盘上向上滚动

标签 ios ipad uiscrollview keyboard uitextview

问题陈述:我有 UIView 的 Nib 文件包含 UIScrollview,在 ScrollView 中我有几个 TextFields 和底部的 TextView。我想要的是当文本字段或 TextView 开始编辑时向上滚动。

我尝试过:

在客户方法中

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWasShown(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)

我正在调用此方法父 View 。

通知处理:

func keyboardWasShown(notification: NSNotification)
{
    var userInfo = notification.userInfo!
    var keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue
    keyboardFrame = self.convert(keyboardFrame, from: nil)

    var contentInset:UIEdgeInsets = self.mainScroll.contentInset
    contentInset.bottom = keyboardFrame.size.height
    self.mainScroll.contentInset = contentInset
}

这对于 UITextFields 来说工作得很好,但对于 UITextView 来说却不起作用。知道错误在哪里。

PS:我也设置了UITextField和UITextView的委托(delegate)。

任何帮助将不胜感激。

最佳答案

将 KeyboardWasShown 函数替换为以下函数:

 func keyboardWasShown(notification: NSNotification)
{
    var userInfo = notification.userInfo!
    var keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue
    keyboardFrame = self.convert(keyboardFrame, from: nil)
    self.mainScroll.contentOffset = CGPoint(x: 0, y: keyboardFrame.size.height - Any number that fits your need.)
}

在 keyBoardWillHide 中:

self.mainScroll.contentOffset = CGPoint(x: 0, y: 0)

希望能有所帮助。 快乐编码!

关于ios - UIScrollView 在键盘上向上滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42899098/

相关文章:

iphone - 为什么开始搜索时我的搜索 TableView 没有出现?

ios - 适用于 iOS 的三角形按钮

iphone - 创建适用于 ipad 和 iphones 的动态 list 文件

iphone - 以最快和最有效的方式调整 UIImage 的大小

ios - 当用户更改 View 时 UIScrollView 卡住

ios - Swift 2.0 'unexpected trailing closure' 惰性变量分配错误

ios - 使用 Socket.io swift 客户端向 Sails 服务器发送虚拟 POST 请求

ios - Xcode 5 和 iOS 7 中 UIScrollView 的错误定位与自动布局

iphone - 在可缩放 ScrollView 中,如何确定窗口中内容的位置?

ios - 谷歌云端硬盘 iOS : Upload HTML file to overwrite an existing Docs file