UIView加入手势 然后UITableView 加入进这个View 导致UITableView 的单元格点击事件无效

#import "ViewController.h"

@interface ViewController ()<UITableViewDataSource,UITableViewDelegate,UIGestureRecognizerDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    UIView * v = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 280, 100)];
    v.backgroundColor = [UIColor redColor];
    [self.view addSubview:v];
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewClick:)];
    tap.delegate  = self;
    [v addGestureRecognizer:tap];

    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 280, 100)];
    tableView.delegate = self;
    tableView.dataSource = self;

    [v addSubview:tableView];
}
-(void) viewClick:(UITapGestureRecognizer*) tap
{
    NSLog(@"点击view");
}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell * cell = [UITableViewCell new];
    cell.textLabel.text = @"測试";
    return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"点击单元格");
}

#pragma mark - UIGestureRecognizerDelegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    // 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件
    if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
        return NO;
    }
    return  YES;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

解决方式是 加入手势的代理 重写- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
函数

下面是代码

时间: 2024-10-12 20:32:48

UIView加入手势 然后UITableView 加入进这个View 导致UITableView 的单元格点击事件无效的相关文章

UIView添加手势 然后UITableView 添加进这个View 导致UITableView 的单元格点击事件无效

#import "ViewController.h" @interface ViewController ()<UITableViewDataSource,UITableViewDelegate,UIGestureRecognizerDelegate> @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIView * v = [[UIView alloc] init

[Xcode10 实际操作]五、使用表格-(8)自定义UITableView单元格Accessory样式(附件图标)

本文将演示如何自定义单元格的附件图标. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 3 //首先添加两个协议. 4 //一个是表格视图的代理协议UITableViewDelegate 5 //另一个是表格视图的数据源协议UITableViewDataSource 6 class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSou

给UIView添加手势

对于不能addTarget的UI对象,添加手势为他们带来了“福音”,以为UIView添加手势为例,揭开手势的面目. 1,创建一个view先, UIView * jrView=[[UIViewalloc] initWithFrame:CGRectMake(0, 0, 160, 160)]; jrView.center=self.view.center; jrView.backgroundColor=[UIColorgreenColor]; [self.viewaddSubview:jrView];

IOS - UIView添加点击事件

UIView通过手势(Gesture-UITapGestureRecognizer)添加点击事件, 类似于UIButton的效果. 示例: UIImageView *iKnowIcon = [CYResource loadImageView:@"free-question-once-more-i-know.png"]; iKnowIcon.top = questionIcon.top + scaleWidthWith320(200); iKnowIcon.centerX = self.

iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建

一.实现效果 说明:该示例在storyboard中使用动态单元格来完成. 二.实现 1.项目文件结构和plist文件 2.实现过程以及代码 在tableview的属性选择器中选择动态单元格. 说明:在storyboard中直接使用其自带的动态单元格完成tableviewcell的定义,并创建了一个管理该cell的类,进行了连线. 实现代码: 数据模型部分: YYappInfo.h文件 1 // 2 // YYappInfo.h 3 // 01-使用动态单元格来完成app应用程序管理界面的搭建 4

iOS笔记【单元格右滑手势】 2017-09-09

// 响应单元格右滑手势 override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { let actionShare = UITableViewRowAction(style: .normal, title: "分享") { (_,IndexPath) in // 定义滑动菜单样式和标题 let ac

iOS开发——UI_swift篇&amp;UItableView实现移动单元格

UItableView实现移动单元格 1,下面的样例是给表格UITableView添加单元格移动功能: (1)给表格添加长按功能,长按后表格进入编辑状态 (2)在编辑状态下,可以看到单元格后面出现拖动按钮 (3)鼠标按住拖动按钮,可以拖动单元格到任意位置 (4)拖动完毕后,还会触发TabelView对应的代理事件 2,效果图如下:   3,代码如下 1 import UIKit 2 3 class ViewController: UIViewController,UITableViewDeleg

IOS开发之功能模块--给任意的UIView添加点击事件

前言:好久没写博客,今天来一波.我在实际项目开发中,会遇到这样功能需求:我已经搭好了iOS的UI界面,但是很多界面的子View用了UIView,然后这些UIView中用了UILabel和UIImageView,然后接着需求要这些View能够有点击事件,比如一点击就跳转到某个控制器.一开始懵逼了,难道我还要把他们全部改成UIButton,但是UIButton不好添加子View,难道我还要全部自定义一下UIButton,就算自定义好了,在项目已经打好的界面还是要一个个替换,多麻烦.所以就想到通过UI

UIKit框架(21)UITableView实现复杂单元格(一)

上篇文章介绍了UITableView的数据源驱动.重用机制.刷新数据等基本用法 本篇文章介绍如何实现一些复杂的单元格 UITableViewCell单元格对象有四种基本样式,开发中这个基本样式往往不能满足我们的需求,也就是说需要自定义UITableViewCell的样式,介绍主要的两种做法: 1)使用纯代码自定义 2)使用storyboard中的prototype cell 先来介绍一下UITableViewCell UITableViewCell表格单元格 UITableView中的单元格使用