Выполнение пользовательского inputView. Пользовательский inputView не отображается, если не открыта клавиатура по умолчанию

У меня проблема в том, что я не могу выполнить пользовательский inputView, если не открыта клавиатура. У меня есть 2 UITextField, у одного из них есть собственный inputView. Назовем их tf1 и tf2. tf2 имеет настраиваемый inputView. если я сначала нажму tf2, ничего не произойдет. Если я сначала нажму tf1 и появится клавиатура по умолчанию, а затем, когда я нажму tf2, появится пользовательский inputView. Если на экране нет клавиатуры, пользовательский 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

person letitbefornow    schedule 12.12.2015    source источник
comment
не могли бы вы разместить код .....   -  person Prashant Tukadiya    schedule 13.12.2015
comment
Конечно. Я добавил код   -  person letitbefornow    schedule 13.12.2015
comment
вы должны установить свое представление как представление ввода в методе textfieldShouldBeginEditing   -  person Prashant Tukadiya    schedule 26.12.2015
comment
Я пробовал, как вы сказали, но результат все тот же   -  person letitbefornow    schedule 26.12.2015


Ответы (1)


Наконец-то я это сделал. Я удалил коды загрузки пера и т. Д. Из viewDidLoad и создал для него функцию.

Здесь функция

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++

            }
        }
    }

И это все решило.

person letitbefornow    schedule 11.01.2016