美文网首页
[iOS日常]自定义点击事件

[iOS日常]自定义点击事件

作者: aitality | 来源:发表于2021-01-20 08:17 被阅读0次

在iOS开发中,UI控件的点击并不是默认都添加了,如UIView,UILabel,UIImageView等等都没有默认的点击支持。给任意uiview添加点击很简单,但是有一些细节还是需要注意一下。

常规用法

demo如下

UIView *testView = [UIView new];
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onClick)];
[testView addGestureRecognizer:recognizer];

很简单吧,可是你会发现点击没反应,那是因为少了一个设置:

//默认是NO
testView.userInteractionEnabled=YES;

在列表中使用

我们都知道列表最大的特点就是复用,处理点击我们就需要知道这个点击事件到底是哪个cell的的哪个view点击的,在此不讨论列表点击处理的具体实现,只说明view的点击传递。这个时候就要用到Target-Action模式了。

@interface TestView : UIView
@property (assign, nonatomic) id target;
@property (assign, nonatomic) SEL action;
@end

@implementation TestView 

//其他代码省略
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onClick)];
[self addGestureRecognizer:recognizer];
//其他代码省略

-(void) onClick {
    [self.target performSelector:self.action];
}
@end

如上,就可知道点击的view是谁了,但是会有警告:

PerformSelector may cause a leak because its selector is unknown

正确的写法

-(void) onClick {
    if([self.target respondsToSelector:self.action]) {
        IMP imp = [self.target methodForSelector:self.action];
        void (*func)(id, SEL, UIView *) = (void *)imp;
        func(self.target, self.action, self);
    }
}

小结

对于代码中的警告,一定要慎重对待,不能一股脑的给屏蔽了,这种自欺欺人的操作害人害己呀。

相关文章

  • [iOS日常]自定义点击事件

    在iOS开发中,UI控件的点击并不是默认都添加了,如UIView,UILabel,UIImageView等等都没有...

  • 自定义View入门(七) - 监听

    本章目录 Part One:自定义View的点击事件 Part Two:点击事件处理 自定义View的点击事件 官...

  • elementUI 弹框

    弹框 一、自定义图标 (通过class名) 二、自定义按钮及点击事件 弹框按钮的点击事件,可以用jquery .u...

  • IOS 点击事件

    一次点击事件所有的View的hitTest:withEvent:都会循环2遍。猜测:第一遍寻找最适合的View,第...

  • iOS 点击事件

  • 自定义TabBar

    基本自带TabBar来实现自定义 在iOS原生的tabBar中,能够实现按钮的点击事件,能够实现视图控制器的切换等...

  • iOS自定义TabBar中间凸起样式

    描述 iOS自定义TabBar中间凸起样式iOS解决超出frame区域无法点击问题 自定义中间(任意位置)凹凸样式...

  • iOS 使用转场动画实现暗色背景弹框

    GitHub 支持: 自定义呈现动画。 自定义消失动画。 是否允许点击暗色背景处消失。 自定义点击暗色背景处的事件...

  • 移动web开发第三天(触摸事件和点击事件)

    1.触摸事件 触摸事件使用函数: 2.兼容事件 2.点击事件 注意:移动端点击事件可以使用click事件和自定义事...

  • 6-2 事件-代码演示

    绑定点击事件和取消默认行为 自定义一个绑定事件,封装 点击激活,先显示激活,后显示取消。点击取消,正常显示。事件的...

网友评论

      本文标题:[iOS日常]自定义点击事件

      本文链接:https://www.haomeiwen.com/subject/uumhzktx.html