【发布时间】:2016-03-25 14:02:45
【问题描述】:
所以我遵循了关于在键盘上方移动文本的苹果指南,当文本字段位于滚动视图上时,这可以正常工作,但是滚动视图包含一个集合视图,并且该集合视图加载一个包含文本字段的笔尖,它们都被分配为委托,当他们被按下时,委托的 didEdit/endEdit 功能确实会触发,但是键盘管理代码没有按预期工作......这是键盘管理代码
http://creativecoefficient.net/swift/keyboard-management/
这里是正在使用的代码的链接..
func keyboardWillBeShown(sender: NSNotification) {
print("KEYBOARD SHOWN")
let info: NSDictionary = sender.userInfo!
let value: NSValue = info.valueForKey(UIKeyboardFrameBeginUserInfoKey) as! NSValue
let keyboardSize: CGSize = value.CGRectValue().size
let contentInsets: UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0,keyboardSize.height, 0.0)
print(keyboardSize.height)
ScrollView.contentInset = contentInsets
ScrollView.scrollIndicatorInsets = contentInsets
// If active text field is hidden by keyboard, scroll it so it's visible
// Your app might not need or want this behavior.
var aRect: CGRect = self.view.frame
aRect.size.height -= keyboardSize.height
let activeTextFieldOrigin: CGPoint? = activeTextFieldRect?.origin
if (!CGRectContainsPoint(aRect, activeTextFieldOrigin!)) {
let dHeight = displayView.frame.height
ScrollView.scrollRectToVisible(activeTextFieldRect!, animated:true)
}
此代码的问题在于 activeTextfield 与视图的文本字段配合得很好,当我单击文本字段时会打印这些点
activetextfield Frame
(0.0, 20.5, 150.0, 20.5)
但是当我点击集合视图笔尖文本字段时,我得到了这些点
0.0, 0.0, 259.5, 30.0
我相信这是键盘阻止文本字段的原因,activetextfieldRect 给了错误的坐标
ScrollView.scrollRectToVisible(activeTextFieldRect!, animated:true)
有人可以就如何解决这个问题给我一些指导吗?
【问题讨论】:
标签: ios swift uiscrollview uitextfield