IOS <11上似乎忽略了“延迟接地”属性

时间:2018-12-22 10:15:55

标签: swift xcode uitableview cocoa-touch uiscrollview

我在这样创建的测试项目中有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(可能是更早的版本)上,就好像从未取消选中该框并且对按钮的触摸仍然被延迟

我了解仍然可以在单元格中将视图设为“可点击”,并立即对“在内部进行触摸”做出响应(因为触摸事件将取消触摸的延迟),但是我仍然希望触摸 down 事件立即调用(在所有iOS版本上,不仅是11+),因为:

1)我希望重新排序控件立即响应。

2)我希望单元格中的视图具有正常的/即时的触地视觉反馈。

我还咨询了4年前写的this similar, but not the same, question,并尝试应用答案,但是这些答案似乎都不适用于该问题的现代原因。

有人知道原因吗?(最好是Swift)解决方案?

0 个答案:

没有答案