zoukankan      html  css  js  c++  java
  • 在VC上加一个tableview,为什么touchesBegan方法没有触发

    pointInside(),查找是从UIWindow开始,先判断是否点击点是否在自己的bounds内,如果是,往下遍历;hitTest(),最终返回的view,是逆向的,如果能响应点击,就把自己返回。

    为什么没有响应点击
    在VC上加一个tableview,为啥touchesBegan()没有触发?
    tableview继承scrollview,scrollview默认取消touch的传递,所以父视图就不会响应touch了。

    为什么VC的view上加了其他子视图,当点击子视图时,VC中的touchesBegan()被调用了?
    答:因为子视图没有重写这个方法touchesBegan(),请参考下面的问题;

    为什么uiview,重写了touchesBegan(),VC的touchesBegan()就不响应了?
    答:子视图响应了touch,那么父视图touch就不会响应了。

    TableView为什么不响应touchBegan

    回到刚开始的问题,当我们点击TableView时,为什么touchBegan不响应呢?通过响应链我们不难想象到,当我们点击屏幕时,第一响应者应该是UITableView,而我们调用的touchBegan其实是ViewController的View的方法,所以无法被调用。
    解决方法也很简单,我们可以给tableView写一个基类,重写tableview的touchBegan方法,通过block或者代理传出,然后继承基类,即可实现touchBegan的响应。


    不过对于滚动视图的键盘回收,感觉还是`tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag`这样比较优雅,毕竟是系统提供的。 


    作者:WhisperKarl
    链接:https://www.jianshu.com/p/d77164f8cac5
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    04.VUE学习之v-text v-html
    03.VUE学习之动态绑定值
    2019年Vue学习路线图
    02.VUE学习二之数据绑定
    01.VUE学习一
    一张图解析FastAdmin中的表格列表的功能
    python 正则表达式与JSON字符串
    jQuery的select2下拉框的搜索功能(使用select2插件,方便简单)
    笔记1 python入门学习笔记
    MySQL----Navicat使用
  • 原文地址:https://www.cnblogs.com/dengchaojie/p/10288890.html
Copyright © 2011-2022 走看看