旋转后Swift inputAccessoryView未附加到键盘

Posted

技术标签:

【中文标题】旋转后Swift inputAccessoryView未附加到键盘【英文标题】:Swift inputAccessoryView not attached to keyboard after rotation 【发布时间】:2017-02-03 18:44:06 【问题描述】:

在旋转任何其他视图后,我遇到了inputAccessoryView 的问题。例如: 1)转到视图A并旋转到横向 2) 然后旋转回纵向。 3) 去查看B

在视图 B 中,我有以下代码将 inputAccessoryView 分配给 UITextField 但是,在我旋转应用程序中的任何视图后,附件视图始终附加到屏幕顶部而不是键盘顶部.如果我不旋转任何视图,附件视图会按预期附加到键盘顶部。

这里是用于创建和分配inputAccessoryView的代码,它是从viewDidLoad调用的

func addDoneButtonOnKeyboard()

    let doneToolbar = UIToolbar(frame: CGRect(x:0, y:0, width:320, height:50))
    doneToolbar.barStyle = UIBarStyle.blackTranslucent
    doneToolbar.isTranslucent = true

    let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace,
                                    target: nil,
                                    action: nil)

    let doneButton = UIBarButtonItem(title: "Done",
                                     style: UIBarButtonItemStyle.done,
                                     target: self,
                                     action: #selector(MyVC.doneButtonAction))

    doneToolbar.setItems([flexSpace,doneButton], animated: false)
    doneToolbar.sizeToFit()
    doneToolbar.autoresizingMask=UIViewAutoresizing.flexibleWidth

    self.myTextFild.inputAccessoryView = doneToolbar

我已经搜索过,但没有看到任何其他类似的问题/答案......

【问题讨论】:

***.com/questions/8140520/… 检查这可能会给你一个提示如何观察方向变化和调整框架。 @Sneak 我已经尝试按照建议调整框架的大小是几个 SO 帖子,但这并没有解决问题。 如果您正确调整了设备旋转上的框架大小和位置,那么我真的不知道问题出在哪里,也许您应该使用调整大小和重新定位的方法以及您如何更新问题这样做时观察设备旋转。 @Sneak 问题不在于包含附件视图的视图的旋转,该视图固定为纵向。每当旋转不同的视图然后我转到带有附件视图的视图时,就会出现问题。所以在有问题的视图上甚至不允许旋转。 @Sneak 感谢您的努力,我也看到了这个但仍然没有解决方案...... 【参考方案1】:

我的情况是 inputView 是一个 datePicker,我遇到了同样的问题。我的解决方案是:

textFieldDate.inputView?.autoresizingMask = [.flexibleHeight, .flexibleWidth]

不确定这是否对您也有帮助,因为您使用键盘作为 inputView,但也许它可以帮助其他人解决 datePicker 问题。

【讨论】:

以上是关于旋转后Swift inputAccessoryView未附加到键盘的主要内容,如果未能解决你的问题,请参考以下文章

Swift 4:设备旋转后 UI 无法更新

swift 旋转后修复UIStackView内的UITableView高度

Swift:旋转 UIImage 并填充它

Swift:如何在设备旋转后刷新UICollectionView布局

在 UIScrollview Swift 中旋转 UIView

iOS Swift UIViewController 旋转