UITableView need long press to select a row

前端 未结 4 1441
既然无缘
既然无缘 2020-12-20 16:24

Anyone has ever come into the problem that UITableView need long press to trigger the didSelectRowAtIndexPath method?

相关标签:
4条回答
  • 2020-12-20 16:43

    If you have used any gesture recognizer try to removing it and check if it causing the problem or not ?

    Other wise

    Not sure but The problem might be in the UITableView has delaysContentTouches turned ON. Turn this OFF so touches get through to the cells faster.

    0 讨论(0)
  • 2020-12-20 16:49

    You have to add UILongPressGesture to your cell's view and on fire just call didSelectRowAtIndexPath (better will be to call another method - not standard UITableViewDelegate's method) from your class that adopts UITableViewDelegate.

    I will suggest You create own protocol, inherited from UITableViewDelegate, add there method for long press behavior method and enjoy. Something similar to:

    @protocol LongPressTableViewCellDelegate <UITableViewDelegate>
    - (void)tableView:(UITableView *)tableView didLongTapCell:(UITableViewCell *)cell;
    @end
    

    Your delegate in this case would adopt not standard UITableViewDelegate, but this one. Also You have to create own cell (inherited from UITableViewCell) and add there delegate property (id ) that will be used when long press fired.

    Also there can be situation that standard didSelectRowAtIndexPath will be fired before your long press will fire, so I suggest you to disable standard selection behavior for table view:

    _tableView.allowsSelection = NO;
    
    0 讨论(0)
  • 2020-12-20 16:58

    I had exactly the same trouble :

    • I used the Tap Gesture recognizer to manage different action in my View Controller
    • I wanted a classic tap (short click) to trigger the didSelectRowAtIndexPath method but just a long press working by default

    My solution to select a cell in Table View by a short tap (press) :

    • Select your Tap Gesture recognizer in your Story Board
    • Go to the attributes inspector and deselect "Canceled in view"
    0 讨论(0)
  • 2020-12-20 17:01

    In my situation I had a UITapGestureRecognizer on my view for hiding my keyboard.

    This solved the problem:

    tap.cancelsTouchesInView = false
    
    0 讨论(0)
提交回复
热议问题