【问题标题】:Custom inputView performing. Custom inputView doesn't appear unless default keyboard is opened自定义 inputView 执行。除非打开默认键盘,否则不会出现自定义 inputView
【发布时间】:2015-12-12 16:20:18
【问题描述】:

我有一个问题,除非打开键盘,否则我无法执行自定义 inputView。我有 2 个 UITextField,其中一个有自定义 inputView。我们称它们为 tf1 和 tf2。 tf2 有自定义 inputView。如果我先点击 tf2 什么都不会发生。如果我先点击 tf1 并出现默认键盘,然后当我点击 tf2 自定义 inputView 时也会出现。如果屏幕上没有键盘,则不会出现自定义 inputView。如果屏幕上有键盘自定义 inputView 可以出现。为什么?

我如何分配输入视图如下所示:

let numPad = KeyboardViewController(nibName:"KeyboardView",bundle: NSBundle.mainBundle())
let numPadFrame = CGRectMake(0, 0, 1024, 352)

override func viewDidLoad() {
    super.viewDidLoad()

    customKeyboard = numPad.view
    customKeyboard.frame = numPadFrame
    tf2.inputView = customKeyboard

【问题讨论】:

  • 你能把代码发一下吗.....
  • 当然。我添加了一些代码
  • 你应该在textfieldShouldBeginEditing方法中将你的视图设置为输入视图
  • 我按你说的试过了,结果还是一样

标签: ios swift uitextfield swift2.1 uiinputviewcontroller


【解决方案1】:

我终于成功了。我已经从 viewDidLoad 中删除了关于加载 nib 等的代码,并为它创建了一个函数。

这里是函数

func loadInterface() {

    // load the nib file
    let calculatorNib = UINib(nibName: "KeyboardView", bundle: NSBundle.mainBundle())
    // instantiate the view
    let calculatorView = calculatorNib.instantiateWithOwner(self, options: nil)[0] as! UIView

    self.view.frame = CGRectMake(0, 0, 1024, 352)
    let objects = calculatorNib.instantiateWithOwner(self, options: nil)
    self.view = objects[0] as! UIView
    self.inputView?.addSubview(calculatorView)


}

并在 viewDidLoad 中调用此函数。

    override func viewDidLoad() {
        super.viewDidLoad()

        loadInterface()

        self.view.autoresizingMask = UIViewAutoresizing.FlexibleHeight
        self.view.translatesAutoresizingMaskIntoConstraints = false


//        let nib = UINib(nibName: "KeyboardView", bundle: NSBundle.mainBundle())
//        self.view.frame = CGRectMake(0, 0, 1024, 352)
//        let objects = nib.instantiateWithOwner(self, options: nil)
//        view = objects[0] as! UIView;
        var counter = 0
        for view in self.view.subviews {
            if let btn = view as? UIButton {
                btn.layer.cornerRadius = 5.0
                btn.translatesAutoresizingMaskIntoConstraints = false
                btn.tag = counter
                counter++

            }
        }
    }

它解决了一切。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2015-08-05
    • 2011-06-30
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多