zoukankan      html  css  js  c++  java
  • UICollectionView与UITableView混用手势冲突

    前言

    最近在重构某个模块,以后别人封装的所谓的基类就像一坨死一样,看见就恶心,相信同行的你们能够明白那种心情。为什么要重构?并不是真的因为它像一坨死,而是因为这个模块是用户使用最频繁的,而且出现了不少bug,最重要的是这bug还是p1级别的致命bug。

    曾经经过了几天的压力测试都没有复现出来,但是用户却频繁反馈,这就是决定重构的原因了。重构的界面是这样的:

    image

    当UICollectionView中的每个cell放的是一个controller.view而这个controller.view又放一个UITableVIew时,这时候将collectionView的滚动方向设置为横向就可以了。

    但是,如果我们设置了bounces为YES,那么右滑返回手势就没有了,怎么办?

    实现思路

    共使用了四个控制器类:

    • ContentController:手势冲突当前所在的控制器,使用UICollectionView,每个cell对应于一个控制器的view
    • SiteController1:标签一对应的控制器
    • SiteController2:标签二对应的控制器
    • SiteController3:标签三对应的控制器

    配置UICollectioView

    当我们滚动到标签三时,再滑动就会超出范围,此时会显示部分空白,这体验不太好,不希望可以再滑动了。同样,当滑动到标签一时,再右滑时,不希望显示空白部分,而是触发右滑返回手势。

    解决方案

    解决方案就是实现UIScrollView的代理方法,当超出屏宽*2时,限制在屏宽*2的位置处。同样,当小于0时,就限制在0处,这样就解决了出现空白的问题。同时,这样就不会关闭用户响应,因此系统的右滑返回手势仍然可以触发。

    经过这么一折腾,大家明白如何解决的了吗?

  • 相关阅读:
    Linux Netcat 命令——网络工具中的瑞士军刀
    rsyslog磁盘辅助(Disk-Assisted)模式踩坑记
    JS魔法堂:Data URI Scheme介绍
    java.lang.OutOfMemoryError: PermGen space
    Microsoft SQL Server Data Tools
    Bootstrap 模态对话框只加载一次 remote 数据的解决办法
    BootStrap modal() 如何根据返回的HTML宽度自动调整宽度?
    百度编辑器Ueditor 初始化加载内容失败解决办法
    导航
    SQL SERVER 2005中利用XML对字符串拆分的方法
  • 原文地址:https://www.cnblogs.com/jiayongqiang/p/5339639.html
Copyright © 2011-2022 走看看