Как сделать так, чтобы первый ввод текста стал первым ответчиком и показал клавиатуру с формами Eureka?

Я использую быструю библиотеку форм Eureka здесь: Формы Eureka

Я хотел бы, чтобы моя первая строка формы ввода становилась первым ответчиком каждый раз, когда появляется представление. Я попытался добавить обратный вызов .cellUpdate, который запускается каждый раз, когда появляется представление, и выполнить функцию cell.becomeFirstResponder(), но это не сработало. Может ли кто-нибудь с опытом работы с этой библиотекой, пожалуйста, помочь? Спасибо.


person demig0d    schedule 29.07.2016    source источник
comment
какой у тебя тип клетки? это TextRow, ImageRow и т. д.?   -  person Reinier Melian    schedule 29.07.2016


Ответы (4)


Попробуй это

import UIKit
import Eureka

class ViewController3: FormViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        form +++ Section("Custom cells")
            <<< TextRow("TextRow"){_ in
        }
    }

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        let row = self.form.rowByTag("TextRow") as! TextRow
        row.cell.textField.becomeFirstResponder()
    }
}

Я надеюсь, это поможет вам

person Reinier Melian    schedule 29.07.2016
comment
Спасибо Рейнир!!! Я вижу, что вы являетесь участником Eureka. Был бы очень признателен, если бы вы могли взглянуть на мой другой вопрос: stackoverflow.com/questions/38662315/ - person demig0d; 29.07.2016
comment
@demig0d Я посмотрю и опубликую свои результаты, не волнуйтесь - person Reinier Melian; 29.07.2016
comment
Большое спасибо! - person demig0d; 29.07.2016
comment
Похоже, это не работает на iOS 10 или более новой версии Eureka. Что работает, так это вызывать это в viewDidAppear вместо viewWillAppear - person Peterdk; 24.04.2017
comment
что, если у нас есть PickerInputRow, который мы хотим сделать первым ответчиком? - person Alex Andrews; 13.02.2018
comment
Я рассмотрю это @Alexi, как только у меня будет что-то, я опубликую это как обновление - person Reinier Melian; 13.02.2018
comment
привет @ReinierMelian, нашел решение. В ячейке есть член с именем cellBecomeFirstResponder(). - person Alex Andrews; 13.02.2018
comment
Красавчик у тебя получилось, поздравляю! Я обедал ;) с наилучшими пожеланиями @Alexi - person Reinier Melian; 13.02.2018

Зацепите его в cellSetup, чтобы нам не нужно было искать ячейку в viewDidAppear.

form +++ Section("")
        <<< TextRow() {
            $0.title = "Name"
            $0.value = list?.name ?? ""
            $0.cellSetup() { cell, row in
                  cell.textField.becomeFirstResponder()
            }
            $0.onChange() {
                self.list.name = $0.value ?? ""
            }
        }
person Phuah Yee Keat    schedule 19.11.2018

Вдохновленный ответом Рейнира, у меня сработал еще один способ.

Напрямую вызовите $0.cell.textField.becomeFirstResponder() при настройке формы.

        form +++ Section()
        <<< ZipCodeRow() {
            $0.value = postal_code
            $0.cell.textField.becomeFirstResponder()
            }
person Q Liu    schedule 25.01.2017
comment
Это не работает на iOS 10 или более новой версии Eureka. - person Peterdk; 19.05.2017

Свифт 4:

В ViewDidLoad() добавить:

let row = self.form.rowBy(tag: "TextRow.tag") as! TextRow
row.cell.textField.becomeFirstResponder()
person arakweker    schedule 21.01.2018