我有一个带有文本字段和文本视图的表视图.我已经实现了苹果示例代码https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html中建议的代码

@IBOutlet var myTableView: UITableView
func keyboardWasShown (notification: NSNotification)
{
    println("keyboard was shown")
    var info = notification.userInfo
    var keyboardSize = info.objectForKey(UIKeyboardFrameBeginUserInfoKey).CGRectValue().size

    myTableView.contentInset = UIEdgeInsetsMake(0, 0, keyboardSize.height, 0)
    myTableView.scrollIndicatorInsets = myTableView.contentInset
}

func keyboardWillBeHidden (notification: NSNotification)
{
    println("keyboard will be hidden")
    myTableView.contentInset = UIEdgeInsetsZero
    myTableView.scrollIndicatorInsets = UIEdgeInsetsZero
}
  override func viewDidLoad() {

    super.viewDidLoad()

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWasShown:", name: UIKeyboardDidShowNotification, object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillBeHidden:", name: UIKeyboardWillHideNotification, object: nil)

}

当我点击滚动视图的"文本"时,它会刚好位于屏幕顶部上方,但当我松开键盘时,它仍会向上滚动.就像第一次之后不能修改insets属性一样.我犯了什么错?

推荐答案

try 保持编辑索引路径editingIndexPath Getting index path,并将tableview滚动到该索引路径

func keyboardWasShown (notification: NSNotification)
    {
        println("keyboard was shown")
        var info = notification.userInfo
        var keyboardSize = info.objectForKey(UIKeyboardFrameBeginUserInfoKey).CGRectValue().size

        var contentInsets:UIEdgeInsets

        if UIInterfaceOrientationIsPortrait(UIApplication.sharedApplication().statusBarOrientation) {

            contentInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize.height, 0.0);
        }
        else {
            contentInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize.width, 0.0);

        }

        myTableView.contentInset = contentInsets

        myTableView.scrollToRowAtIndexPath(editingIndexPath, atScrollPosition: .Top, animated: true)
        myTableView.scrollIndicatorInsets = myTableView.contentInset
    }

Swift相关问答推荐

体积单位从夸脱转换为杯似乎关闭了

如何将泛型函数存储到变量中?

如何让ScrollView缩小到合适的大小,并在没有黑客攻击的情况下占用最小空间

SWIFT`String.Encoding`:`.unicode`vs`.utf16`

String.Index encodedOffset已弃用,但建议的替代方案不起作用

swift:只要框架名称中有一个带有框架名称的公共实体,就指定框架中公共 struct 的路径

如何增加 NSStatusBar 图像大小?

如何使 onKeyPress 与 TextField 快速配合使用?

macOS 的窗口框架中使用的真实类型和真实类型是什么?

我怎样才能缩短(提高效率)这段代码?

一组可散列的自定义元素插入相等的元素

Swiftui 按钮依次显示一组图像

try 制作一个 Swift 扩展来替换字符串中的多次出现

从 Swift 列表中的行中检索值

在 RealityKit 中创建转场

快速的 AES 加密

如何在 Swift 中复制字典?

Swift 中惰性 var 的优势是什么

不能从非开放类继承 swift

swift中相同的数据类型多变量声明