我有一个UIView,它涵盖了所有的UITableView.UIView正在使用手势识别器来控制表格显示的内容.我仍然需要垂直UITableView滚动和行点击.如何从手势识别器将这些传递到桌面?
我已经定制了一个UITableViewCell,我想实现"轻扫删除".但我不想要默认的删除按钮.相反,我想做一些不同的事情.实现这个最简单的方法是什么?当用户滑动删除单元格时,是否有一些方法被调用?我可以阻止默认删除按钮出现吗?
现在我想我必须实现我自己的逻辑,以避免默认删除按钮,并缩小在UITableViewCell的默认实现中滑动删除中发生的动画.
也许我必须使用UIGestureRecognizer?
我想为其中的每个单元格添加一个轻击手势,以UITableView编辑其中的内容.添加手势的两种方式是代码或故事板.我试过了两次但他们失败了.
我可以通过故事板拖放为表格中的每个单元格添加手势吗?它似乎只为第一个单元添加手势.在代码中添加手势,我写了类似的东西,
addGestureRecognizer(UITapGestureRecognizer(target: self,action:#selector(MyTableViewCell.tapEdit(_:))))
Run Code Online (Sandbox Code Playgroud)
要么
addGestureRecognizer(UITapGestureRecognizer(target: self, action:"tapEdit:"))
Run Code Online (Sandbox Code Playgroud)
都工作.但我想让UITableViewController这个手势处理,因为它对数据源做了一些事情.我如何写我的目标和行动?
编辑:
addGestureRecognizer(UITapGestureRecognizer(target: MasterTableViewController.self, action:#selector(MasterTableViewController.newTapEdit(_:)))
Run Code Online (Sandbox Code Playgroud)
它引发一个错误说,无法识别的选择器发送到类0x106e674e0 ...
我正在尝试向表格视图单元格中的对象(特别是图像)添加手势识别器.现在,我对手势识别器很熟悉,但是对于如何设置这个问题我感到有些困惑.实际的表格单元格没有viewDidLoad方法,所以我认为我不能在那里声明手势识别器.
这个问题(UIGestureRecognizer和UITableViewCell问题)似乎是相关的,但答案是在客观C中,不幸的是我只能流利地使用swift.
如果有人可以帮我解决如何向表格单元格中的对象添加手势识别器(不是整个桌面视图),或者甚至可能帮助我将上述链接中的答案翻译成swift,我'不胜感激
我有一个自定义的 tableviewCell ,UIImageView里面有一个 imgView 。我添加UITapGestureRecognizer到 imgView,这样每当我点击它时我就可以更改 imgView 的图像。但是,当我点击 imgView 时,didSelectRowAtIndexPath也会触发。我想要的是:
didSelectRowAtIndexPathdidSelectRowAtIndexPath,只需调用手势回调即可更改 imgView 的图像。当我点击 imgView 内部时,回调函数已经被调用,但在这种情况下我无法阻止 didSelectRowAtIndexPath 。我已经搜索了几个小时但还没有找到解决方案。我正在使用Objective-c。有人对我的问题有什么想法吗?谢谢大家!
更新
最后我发现我的错误是什么。
UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onFavouriteIconTapped:)];
tapGesture.cancelsTouchesInView = NO; // this should be YES by default
[_ivImageView addGestureRecognizer:tapGesture];
Run Code Online (Sandbox Code Playgroud)
只需设置cancelsTouchInView = YES解决我的问题即可。如果值为 YES,触摸事件将被 ivImageView 消耗,单元格将不会被选择。希望这能帮助有同样问题的人。
objective-c uitableview didselectrowatindexpath ios uitapgesturerecognizer
我有一个非常奇怪的问题,我不知道它是否对细胞的正常行为很尴尬,似乎就是这样!因此我将它放弃给一个可以回答的人,如果有任何愚蠢的事情道歉在问这个问题时.通常情况下,当我们触摸一个表格视图单元格时,它会导航到一个视图控制器/一个被编码的控制器.现在这里有什么奇怪的是它没有响应选择或触摸.我检查了是否允许在IB中选择编辑时进行选择.我选择了它,现在这里的扭曲是当我触摸表格视图单元格没有响应时,而是当我水平滑动/当我长按单元格时,它正在导航,真的对这种奇怪的行为感到惊讶!我不明白为什么我需要刷它以在表视图工作中选择单元格.这也发生在表视图下面的按钮!
我已经搜索了与我的情况类似的问题,但我发现只有一个问题,建议检查这个方法,
-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)
但我根本没有实现该方法,我实际上是一个带有几个项目的标签栏,其中我有一个名为AddController的控制器,用于访问控制器中声明的几个属性和字符串等.我将其子类化为如下:
@interface ViewController : AddController
Run Code Online (Sandbox Code Playgroud)
现在因为它在我看到的问题中指定,即我给出的链接,检查你是否在子类控制器页面中复制相同的代码,我谈到了子类化和我做了什么,希望每个人都理解它!
任何人都可以指导我如何摆脱这个问题,并使表视图单元格响应正常触摸,任何帮助非常感谢!
在此先感谢所有:)
我在UITableViewCells中添加了单击和双击手势识别器.但是在滚动表格几次之后,在我的滑动手势结束以滚动表格和滚动动画的开始之间会出现越来越长的暂停.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"tableViewCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap:)];
singleTap.numberOfTapsRequired = 1;
singleTap.numberOfTouchesRequired = 1;
[cell addGestureRecognizer:singleTap];
UITapGestureRecognizer* doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap:)];
doubleTap.numberOfTapsRequired = 2;
doubleTap.numberOfTouchesRequired = 1;
[singleTap requireGestureRecognizerToFail:doubleTap];
[cell addGestureRecognizer:doubleTap];
if (tableView == self.searchDisplayController.searchResultsTableView) {
// search results
}
else {
// normal table
}
return cell;
} …Run Code Online (Sandbox Code Playgroud)