【问题标题】:Custom Keyboard covers standard inputView自定义键盘涵盖标准输入视图
【发布时间】:2015-03-04 12:43:11
【问题描述】:

我为标准 iOS 键盘创建了一个自定义 inputView,它在 iOS 7 和 8 中都能正常工作。 但是当使用 3rd-party 自定义键盘时,它覆盖了我创建的 inputView。它显示了自定义 inputView 一秒钟,并用自定义键盘视图覆盖它。我尝试了几种不同的自定义键盘,它们都有同样的问题。

是否可以在任何类型的键盘上使用 inputView?如果可以,怎么做?

感谢您的建议!

【问题讨论】:

  • 我也遇到过同样的问题,希望有人能给解答

标签: ios keyboard customization


【解决方案1】:

我遇到了同样的问题,我发现使用由视图控制器管理的视图会导致这个问题。 我做了一个简单的demo来演示一下:

如下所示,toggleInputView 将创建一个适用于系统键盘和第三方键盘的输入视图,而toggleInputViewController 将仅适用于系统键盘。

import UIKit


class CustomInputViewController: UIViewController {
    override func viewDidLoad() {
        self.view.frame = CGRect(x: 0, y: 0, width: 300, height: 200)
    }
}

class ViewController: UIViewController {
    var customInputViewController: CustomInputViewController?
    @IBOutlet weak var textView: UITextView!

    @IBAction func toggleInputView(sender: AnyObject) {
        if textView.inputView == nil {
            textView.inputView = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 200))
        } else {
            textView.inputView = nil

        }
        self.textView.reloadInputViews()
    }

    @IBAction func toggleInputViewController(sender: AnyObject) {
        if textView.inputView == nil {
            if self.customInputViewController == nil {
                self.customInputViewController = CustomInputViewController()
            }
            self.textView.inputView = self.customInputViewController!.view
        } else {
            self.textView.inputView = nil
        }
        self.textView.reloadInputViews()
    }

}

因此,您可以通过子类UIView 构建输入视图来解决您的问题。

【讨论】:

  • 问题是我需要使用一个控制器,因为我有几个基于控制器的自定义 inputViews 来为应用程序添加不同的功能。总而言之,这种行为很奇怪,我会尝试找一些时间向 Apple 提交错误。您的代码将有很大帮助,谢谢!
  • 谢谢@ainopara。这似乎是一个iOS错误。我也需要使用 ViewController 并且遇到了同样的问题,但是将我的 ViewController 添加为 UIView 的子视图就可以了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-28
  • 2017-12-21
  • 2021-06-21
  • 1970-01-01
  • 2014-07-21
相关资源
最近更新 更多