【问题标题】:Input Accessory View disappear after Image Picker is cancelled [Swift]取消图像选择器后输入附件视图消失[Swift]
【发布时间】:2018-01-26 23:49:55
【问题描述】:

我有一个非常标准的inputAccessoryView,带有图像和专辑按钮。但是我发现如果在显示键盘时启动相册(换句话说,textView 是第一响应者),则在关闭相册时inputAccessoryView 会消失。如何让它停留在屏幕底部?

我的实现是通用的:

let inputContainerView: UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 40)

override var inputAccessoryView: UIView? {
    return inputContainerView
}

lazy var imagePicker: UIImagePickerController = {
    let picker = UIImagePickerController()
    picker.delegate = self
    return picker
}()

// The function that is hooked up to the album button
func handleAlbum() {
    if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
        imagePicker.sourceType = .photoLibrary
        imagePicker.allowsEditing = false
        present(imagePicker, animated: true, completion: nil)
    }
}

这是一个演示问题的 gif。注意inputAccessoryView 在最后消失了。非常感谢!

【问题讨论】:

    标签: ios swift uiimagepickercontroller inputaccessoryview


    【解决方案1】:

    我解决了。事实证明,在展示图像选择器之前,我需要向 resignFirstResponder() 询问 textView。另外,添加以下代码。它处理用户取消选择操作的情况。

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        picker.dismiss(animated: true, completion: nil)
    }
    

    根据 Apple 文档:

    您的委托对此方法的实现应通过调用父视图控制器的dismissModalViewControllerAnimated: 方法来关闭选取器视图。

    此方法的实现是可选的,但在意料之中。

    dismissModalViewControllerAnimated: 方法已弃用,应改用dismissViewControllerAnimated:completion:

    【讨论】:

    • 我遇到了完全相同的问题,但是在 uiimagepicker 内的搜索栏上输入内容时仍然出现此错误,您能帮忙吗?
    【解决方案2】:

    在图像选择器关闭后尝试添加 self.inputAccessoryView.becomeFirstResponder()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      相关资源
      最近更新 更多