tableview与手势在细胞中突出显示

时间:2012-04-02 14:03:26

标签: objective-c ios cocoa-touch

我有我的表视图,其中的单元格中添加了UILongPressGestureRecognizer。问题是,一旦触摸它的单元格突出显示,但是一旦我的长手势开始(按住按钮),突出显示就会消失。手势有效并且仍在保持,但它对用户来说有点混乱,因为他们不知道它是否仍被保持。如何在整个保留期间使单元格保持高亮显示。

一些代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

        //add long press gesture for the audio AB (eventually VC and TP as well) list 
        //so that users can hold the cell and after 5 seconds have the dialpad for editing that entry
        UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
                                                    initWithTarget:self 
                                                    action:@selector(handleLongPress:)];
        longPress.minimumPressDuration = 1; 
        [cell addGestureRecognizer:longPress];

    }
    cell.textLabel.text = [self.tableArray objectAtIndex:indexPath.row];



    return cell;
}


- (void)handleLongPress:(UILongPressGestureRecognizer*)sender 
{ 
    //used to get indexPath of cell pressed
    UITableViewCell *cell = (UITableViewCell *)[sender view];

    //get the indexPath of cell pressed
    NSIndexPath *indexPath = [self.myTableView indexPathForCell:cell]; 

    //use the index press to figure out the proper join to hold
    self.sharedJoinNumber = indexPath.row+286 ;

}

1 个答案:

答案 0 :(得分:0)

我确实通过使用

解决了这个问题
 //highlight the apprioriate cell
    [self.myTableView selectRowAtIndexPath:indexPath animated:FALSE scrollPosition:UITableViewScrollPositionNone];

- (void)handleLongPress:(UILongPressGestureRecognizer*)sender

之后

但是现在如果取消保留,则需要对单击的下一个单元格进行双击以突出显示。基本上取消长按后的下一个点击并没有引起注意。但我认为这是一个单独的任务,我会相应地提交。上面的代码确实解决了我的问题