为UIiamgeview 添加UITapGestureRecognizer手势不起作用的问题
为UIiamgeview 添加UITapGestureRecognizer手势不起作用的问题
SunGiantor 发表于3年前
为UIiamgeview 添加UITapGestureRecognizer手势不起作用的问题
  • 发表于 3年前
  • 阅读 7
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 1,添加手势的时候点击的view是否已创建; 2,点击的view是否被遮挡 3.self.view.userInteractionEnabled = YES; //开启人机交互

今天在给头像添加点击效果的时候,点击头像的imageview的响应事件不起作用,代码如下:

// 头像

    self.avatarImageView = [[UIImageView alloc] initWithFrame:CGRectMake(posX, posY, avatarHW, avatarHW)];

    self.avatarImageView.image = [UIImage imageNamed:@"avatar_default_small"];

    [self.contentView addSubview:self.avatarImageView];

    

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(avatarTap:)];

    tapGesture.delegate = self;

    [self.avatarImageView addGestureRecognizer:tapGesture];


响应事件如下:

- (void)avatarTap:(UITapGestureRecognizer *)tap

{

    if (tap.state == UIGestureRecognizerStateEnded)

    {

        NSLog(@"lllllllllllllllllllllllllll");

    }

}


点击头像以后断点始终不进该响应事件方法中。


经过排查发现,该view已经创建,并且头像没有被遮挡。跟进imgeview的sdk中发现:

@property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled;               // default is NO

userInteractionEnabled属性默认是NO的,所以应该将头像的userInteractionEnabled属性设为YES,开启人机交互。


于是又查看了一下UIView的userInteractionEnabled属性:

@property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled;  // default is YES. if set to NO, user events (touch, keys) are ignored and removed from the event queue.

UIVIew的userInteractionEnabled属性默认是YES


所以,在处理手势的时候我们应该关注一下交互的控件的userInteractionEnabled属性,因为不同的控件的userInteractionEnabled属性默认值会不同。userInteractionEnabled的值为YES的时候手势才会有效果。


共有 人打赏支持
粉丝 15
博文 55
码字总数 19960
×
SunGiantor
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: