在tableview自定义单元格中的图像上长按手势

Posted

技术标签:

【中文标题】在tableview自定义单元格中的图像上长按手势【英文标题】:Long press gesture on image in tableview custom cell 【发布时间】:2016-07-27 10:51:57 【问题描述】:

我需要一些帮助。今天,我正在处理表格视图自定义单元格,其中单元格包含UIImageView。在 ImageView 上,我想实现长手势。我为此实现了下面给出的代码..但我在我的代码中做错了。在这个视图中长按一次调整大小但我希望在几秒钟后它可以被删除并返回表格视图单元格 谁能推荐我????

更新:

这是代码!

- (void)celllongpressed:(UILongPressGestureRecognizer *)gesture


if (gesture.state == UIGestureRecognizerStateBegan)

    cell = (ActivityFeedCell *)[gesture view];

if (gesture.state == UIGestureRecognizerStateChanged)

    cell = (ActivityFeedCell *)[gesture view];
    logGes_view=[[UIView alloc]initWithFrame:CGRectMake(5, 0,self.view.frame.size.width-10,self.view.frame.size.height)];
    image=[[UIImageView alloc]initWithFrame:CGRectMake(0, 80,self.view.frame.size.width, self.view.frame.size.height-80)];
    image.image=cell.updated_imgView.image;
    UILabel *name_label=[[UILabel alloc]initWithFrame:CGRectMake(10, 15, 150, 30)];
    //city_label.backgroundColor=[UIColor yellowColor];
    name_label.text=lgGesNamelbl;
    UILabel *city_label=[[UILabel alloc]initWithFrame:CGRectMake(10, 50, 180, 30)];
    //city_label.backgroundColor=[UIColor yellowColor];
    city_label.text=lgGesCitylbl;
    [logGes_view addSubview:city_label];
      [logGes_view addSubview:name_label];
    [logGes_view addSubview:image];
    logGes_view.backgroundColor=[UIColor whiteColor];
    [self.view addSubview:logGes_view];

if (gesture.state == UIGestureRecognizerStateEnded)

   // cell = (ActivityFeedCell *)[gesture view];
    [logGes_view removeFromSuperview];



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

UILongPressGestureRecognizer *gesture1 = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(celllongpressed:)];
[gesture1 setDelegate:self];
[gesture1 setMinimumPressDuration:1.0];
[ cell setUserInteractionEnabled:YES];
[cell addGestureRecognizer:gesture1];

【问题讨论】:

显示结果输出和您为此编写的代码。 clipSubviews 可以在 CustomCell 上检查!如果使用原型单元,请尝试禁用 cellForRowAtIndexPath() 或 Interface Builder! 请附上图片 @simerkaur 您不应在评论部分发布代码和图像。请在问题中发布以获取更多详细信息! 在手势方法中 if (gesture.state == UIGestureRecognizerStateBegan) UITableViewCell *cell = (UITableViewCell *)[gesture view]; if (gesture.state == UIGestureRecognizerStateChanged) cell = (UITableViewCell *)[gesture view]; cell.updated_imgView.frame=CGRectMake(0, 0, tableview.frame.size.width, tableview.frame.size.height); if (gesture.state == UIGestureRecognizerStateEnded) cell = (UITableViewCell *)[gesture view]; cell.updated_imgView.frame=CGRectMake(30, 0, 300, 300); 【参考方案1】:
        UILongPressGestureRecognizer *reconizer=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(handleLongPress:)];
                   [reconizer setMinimumPressDuration:1.0];
                 [cell addGestureRecognizer:reconizer];


-(void)handleLongPress:(UILongPressGestureRecognizer*)reconizer

if (gesture.state == UIGestureRecognizerStateBegan)

    UITableViewCell *cell = (UITableViewCell *)[gesture view];
    NSIndexPath *indexPath = [tableview indexPathForCell:cell];
    NSString *s = [NSString stringWithFormat: @"row=%1ld",(long)indexPath.row];
    [self setTitle: s];

if (gesture.state == UIGestureRecognizerStateChanged)

 cell = (UITableViewCell *)[gesture view];
    cell.updated_imgView.frame=CGRectMake(0, 0, tableview.frame.size.width, tableview.frame.size.height);
       
if (gesture.state == UIGestureRecognizerStateEnded)

 cell = (UITableViewCell *)[gesture view];
    cell.updated_imgView.frame=CGRectMake(0, 0, 100, 100);

-(BOOL)canBecomeFirstResponder

    return YES;

【讨论】:

能否请您发送崩溃消息?@simerkaur @simerkaur 您尝试更改 UIGestureRecognizerStateEnded 中的图像视图框架。 @simerkaur 我已经尝试过你的问题,发现当你长按图像时..它的大小会根据视图大小而变化,但它只显示单元格内容视图..所以我的建议是你在大小等于视图大小的图像上显示图像。 图像显示在表格视图单元格上,但存在大小问题 @simerkaur 有什么问题?【参考方案2】:
[cell addGestureRecognizer:gesture1]

用下面一行替换

[ cell.yourimageview setUserInteractionEnabled:YES];  // This enable user interaction on the image view. Required!!


[cell.yourimageview addGestureRecognizer:gesture1];  //yourimageview is your image outlet

【讨论】:

自定义单元格上是否启用了 clipViews?【参考方案3】:

试试看: 单元格是 imageView 的超级视图,因此大小更改不会跨单元格框架 调整大小后添加到mainView中。

【讨论】:

请提供异常信息 当类不响应方法时会发生这种情况。在调用之前检查 if([ActivityFeedViewController instancesRespondToSelector:@selector(celllongpressed:)])/

以上是关于在tableview自定义单元格中的图像上长按手势的主要内容,如果未能解决你的问题,请参考以下文章

在 TableView 的自定义单元格中添加单选按钮并且无法访问外部

iOS swift UIImageView更改tableView单元格中的图像

如何使tableView中单元格中的图像一致显示?

根据在 TableViews 自定义单元格中点击的图像执行 segue

我可以在 tableviewcell 中发现 tableview 手势识别器的状态吗

图像不适合自定义表格视图单元格中的图像视图