【问题标题】:Why is UITableViewCell taking long gesture?为什么 UITableViewCell 采取长手势?
【发布时间】:2015-02-24 11:56:27
【问题描述】:

我在UIView 中有一个UITableView,我们称之为view_A。有一个UIViewController,叫它mainViewController。里面有一个UIButton。在点击该按钮时,我将 view_A 作为子视图添加到 mainViewController 的视图中。表格视图中有几个菜单项。问题是 tableview 没有正确响应触摸。我必须长按单元格才能进行选择。它没有添加任何手势。没有其他视图覆盖它。这绝对是奇怪的,这种行为。请查看以下代码并指出可能导致问题的原因。 这是 mainViewcontroller 中的委托实现/演示:

 -(void) showDropDownMenu: (UIButton *) sender
    {
        UINib *nib = [UINib nibWithNibName:@"DropDownMenuView" bundle:nil];
        self.myView = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0];
        self.myView.hidden = NO;
        self.myView.tag = 101;
        self.myView.delegate = self;
        self.myView.btnBack.hidden = YES;
        CATransition *transition = nil;
        transition = [CATransition animation];
        transition.duration = 0.2;
        transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
        transition.type = kCATransitionPush;
        transition.subtype =kCATransitionFromBottom ;
        transition.delegate = self;
        [self.myView.layer addAnimation:transition forKey:nil];
        [self.view addSubview:self.myView];

    }

-(void) hideDropDownMenu
{
   CATransition *transition = nil;
    transition = [CATransition animation];
    transition.duration = 0.2;//kAnimationDuration
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault];
    transition.type = kCATransitionPush;
    transition.subtype =kCATransitionFromTop;
    transition.delegate = self;
    [self.myView.layer addAnimation:transition forKey:nil];
    self.myView.tag = 102;
    [UIView commitAnimations];



}
-(void) navigateBack
{

}
-(void) themeSelected: (NSIndexPath *) indexPath
{
    NSLog(@"%ld",(long)indexPath.item);
    themeNumber = [NSString stringWithFormat:@"%li",(indexPath.row+1)];
    [self setUpTheme];
}

这是 cell.h 文件的实现:

@interface ThemeTableViewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *themeName;
@property (weak, nonatomic) IBOutlet UIImageView *themePreview;

这是 cell.m 文件的实现:

#import "ThemeTableViewCell.h"
@implementation ThemeTableViewCell
- (void)awakeFromNib {
    // Initialization code
    //ORIGINAL 82
    self.clipsToBounds = YES;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}
  1. 可以在here找到我的 View_A .h 文件。

  2. 可以在here找到View_A.m文件。

更新:我记录了手势,结果以某种方式将长按手势设置为单元格。

【问题讨论】:

  • 您的表格单元包含任何出现此问题的操作系统的附件视图(如复选框、详细信息披露按钮等)。在我的一个项目中,我在 IOS7.0 中遇到了同样的问题,我在 UItableviewcell 中使用了附件视图。为了解决这个问题,我删除了这个视图。
  • 不,这是一个普通的表格视图。单元格中只有 imageview。

标签: ios objective-c iphone uitableview uiview


【解决方案1】:

你是否禁用了单元格 imageview userInteraction,如果没有试试这个cell.yourImageView.userInteractionEnabled = NO

【讨论】:

  • 我认为它不会对单元格的性能产生任何影响,但无论如何我尝试过,问题仍然存在。
  • 试试这个来检查你的手机有没有手势for (UIGestureRecognizer *gesture in cell.contentView.gestureRecognizers) { NSLog(@"%i gesture type %@",indexPath.row, gesture.class); // NSLog(@"min %f",((UILongPressGestureRecognizer *)gesture).minimumPressDuration); NSLog(@"isEnabled %d",gesture.enabled); }
  • 天哪。它说长手势。但正如您在代码中看到的那样,我根本没有添加任何手势。你建议我应该怎么做?
  • 正常的长手势是默认手势,但我不知道可能是什么问题,您可以更新您的问题并提供有关 ThemeTableViewCell 的更多信息,我会尽力帮助您。跨度>
  • 我尝试将点击手势添加到单元格并且它有效。但我想知道是什么导致向单元格添加长按手势。我会更新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多