无法在 Tableview (ios 7) 上禁用多点触控
Posted
技术标签:
【中文标题】无法在 Tableview (ios 7) 上禁用多点触控【英文标题】:Cannot disable multi touch on Uitable View (ios7) 【发布时间】:2013-09-16 10:25:48 【问题描述】:我有一个问题,我为UITableView
使用自定义单元格,当我在tableview
上点击多个手指(2 个手指或更多)时,每个单元格上的一些labels
有很多问题(到显示信息)丢失的文本(它是空的)。所以我尝试在我的桌子上禁用多点触控,但它不受影响。我尝试将tableView.allowsMultipleSelection = NO;
或tableView.multipleTouchEnabled = NO;
添加到cellForRowAtIndexPath or didSelectRowAtIndexPath
中。但没有任何工作。请帮我找出解决方案。
谢谢! 这是我的代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
int row = indexPath.row;
@synchronized (self)
if (row == [voicemailItems count])
// User selected the blank rows
[tableView deselectRowAtIndexPath:indexPath animated:YES];
// Blank out the play button on previous selected row
[self deselect];
return;
if (selectedRowIndexPath != nil)
if (row == selectedRowIndexPath.row)
// Selecting the same row twice will play the voicemail
if (streaming == NO)
if (calling == NO)
// Play the voicemail
[NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(playVoicemailAction:) userInfo:indexPath repeats:NO];
return;
else
// Streaming VM
if ([self isCallInProgress] == YES)
[ScreenUtils errorAllert:@"Cannot play voicemail while call is in progress." type:kUINotice delegate:self];
else
if (![self isVoicemailNotification:selectedRowIndexPath.row])
// Stream the voicemail
[NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(playVoicemailAction:) userInfo:indexPath repeats:NO];
else
// Selecting a different row
[self shutdownPlayer];
[self cancel];
// Blank out the play button on previous selected row
[self deselect];
selectedRowIndexPath = indexPath;
// Enable Call Back button
// Don't enable if private, etc.
btnCallBack.enabled = ([self canCallBack:row] &&
!calling &&
([self isCallInProgress] == NO) &&
![self isVoicemailNotification:selectedRowIndexPath.row]);
// Enable and Delete button
btnDelete.enabled = YES;
// Select the cell
VoicemailCell * cell = (VoicemailCell*)[tblView cellForRowAtIndexPath:indexPath];
[cell select:YES playing:[self isPlaying] stream:streaming];
[tblView setNeedsDisplay];
//[tableView deselectRowAtIndexPath:indexPath animated:YES];
【问题讨论】:
你能显示一些代码吗? 你应该努力解决原因而不是症状。 为什么要从委托方法中调用影响 tableView 的方法?它们应该在分配/初始化 tableview 时调用,并且只调用一次。 您的问题是多个单元格同时被选中? 可以把这两行放在viewdidload方法tableView.multipleTouchEnabled = NO;和 tableView.allowsMultipleSelection = NO;试试这样.. 【参考方案1】:试试这个,对我有帮助!
cell.contentView.exclusiveTouch = YES;
cell.exclusiveTouch = YES;
【讨论】:
【参考方案2】:@试试这个
[cell setExclusiveTouch:YES]
【讨论】:
我为我的表格视图使用自定义单元格,当我点击单元格时,它会捕获此操作,然后通过更改标签的文本颜色来响应,显示按钮(我在自定义文件中执行此操作)...但是当我用不止一根手指在表格视图上快速触摸,我认为它不能像触摸动作那样快速变化。所以它的工作是错误的,我想我必须让第一个水龙头有足够的时间完成它的工作,然后再做第二个水龙头的动作。那么怎么做呢?希望你能明白我的意思。谢谢。 [cell setExclusiveTouch:YES] 在您的单元格上一次禁用多重触摸,您尝试过吗?? 是的!我把它放在 cellForRowAtIndexPath 但它不起作用。【参考方案3】:经过多次尝试,我发现我需要在didSelectRowAtIndexPath的末尾添加以下代码:
[tableView deselectRowAtIndexPath:indexPath animated:YES];
【讨论】:
以上是关于无法在 Tableview (ios 7) 上禁用多点触控的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7.0 UITableView backgroundView 中的控件禁用了用户交互
tableView.contentInset 在 iOS 7 上损坏
在ios中调用另一个UIVIew后如何在tableview中禁用UIButton
设置 UIButton alpha 在 iOS 7 上无法正常工作。
在 ios 7 上显示空文本时显示 UISearchDisplayController searchResults TableView