iOS条件选择下拉菜单

多条件筛选下拉菜单,在很多应用中都有使用。例如:京东、美团等。我们先看一下运行效果:


DropDownMenu.gif

接下来我会针对里面主要代码进行讲解
首先创建出筛选条件类,在创建下拉菜单控件的时候把这个存放该类数组传进去,创建对应标题的按钮

- (instancetype)initWithFrame:(CGRect)frame modelArr:(NSArray *)modelArr;
//筛选类
@interface Model : NSObject
@property (nonatomic, strong) NSString *title; //条件标题
@property (nonatomic, assign) DropDownMenuViewType type; //弹出视图类型
@property (nonatomic, assign) BOOL isSelect; //当前标题是否被选中
@property (nonatomic, assign) NSInteger fileterIndex; //选中该标题中的某个条件的下标 默认选中第一个
@property (nonatomic, strong) NSArray *fileterArr; //该标题下的查询条件数组
@end

当出现tableView的时候,阻断其他按钮的点击事件

    //当前tableView已经出现的时候   点击其他的条件选择按钮没有效果
    for (Model *tempModel in self.modelArr) {
        if (tempModel.isSelect && index != self.selectBtnIndex) {
            return;
        }
    }

因为下面的黑色阴影部分添加的有手势点击事件,所以他会跟UITableView和UICollectionView中的cell点击事件发生冲突,通过实现手势代理来解决这个问题,具体代码如下:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    //获取当前手势点击的视图:他会是UITableViewCell或者UICollectionViewCell的内容视图
    //然后获取到他的父视图 可以找到你自己定义的cell类
    //通过判断类型来阻断手势触发
    if ([touch.view.superview isKindOfClass:[UITableViewCell class]] || [touch.view.superview isKindOfClass:[MyCollectionViewCell class]]) {
        return NO;
    }
    return  YES;
}

最后附上代码的下载地址:
https://github.com/liuxiaoxin369/DropDownMenuView

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容