Свойство «Задержка касания», кажется, игнорируется на IOS <11 - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть UITableView в тестовом проекте, который создан следующим образом:

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        tableView.delegate = self
        tableView.dataSource = self

    }

    // height?
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        //return cellHeightWithoutSeparator + cellSeparatorHeight
        //print("YES!")
        return 80 // arbitrary
    }

    // table wants a UITableViewCell for each row
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CustomCell
        // customize cell here
        return cell

    }

    // how many rows?
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 50 // arbitrary
    }

}

Структура представления таблицы:

enter image description here

Итак, как вы можете видеть, в ячейке есть кнопка.

Я хочу, чтобы кнопка (или любое интерактивное представление, являющееся подпредставлением ячейки) немедленно реагировала на событие касания.и поэтому я снял флажок «Задержка касания» в инспекторе свойств ScrollView на раскадровке.

Насколько я понимаю, снятие флажка с этого поля эквивалентно коду:

tableView.delaysContentTouches = false

Согласно docs , этот метод должен работать на IOS 2.0 +

Но установка этого свойства true или false работает только так, как ожидается, на IOS 11 и 12, , но на IOS 10 (ипредположительно ранее), это как если бы поле никогда не было снято, а нажатия кнопки по-прежнему откладывались.

Я понимаю, что все еще можно сделать представления "кликабельными" в ячейке и ответитьнемедленно «подправить внутри» (потому чтособытие uch-up отменяет задержку при касании), но я все еще хочу, чтобы событие touch down вызывалось немедленно (на всех версиях iOS, а не только на 11+), потому что:

1) Я хочу, чтобы элемент управления повторного заказа реагировал немедленно.

2) Я хочу, чтобы визуальная обратная связь при касании была нормальной / немедленной при просмотре в ячейке.

У меня естьтакже обратился к с этим аналогом, , но не с тем же , вопрос , который был написан 4 года назад, и я попытался применить ответы, но ни один из этих ответов, кажется, не применим ни к какому современномупричина этой проблемы:

Кто-нибудь знает причину и (предпочтительно Swift) решение этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...