質問

Why does the touchesBegan method code get trigger in my UITableView?

Background: I have a UITableView within a UINavigationController. In the UITableView I have custom cells based on subclassing UITableViewCell. I current don't have a selectRowAtIndexPath method in my UITableView.

Some aspects of the answer that would be good to cover off would include:

  • why it doesn't work obviously

  • in terms of getting it to work, how does get one ensure that the correct touch (single-tap) detection will not prevent the other scenarios to work like: selecting a table row, scrolling the tableview contents up and down etc.

  • should the simulator be able to pick up touches etc, or are there cases here where you need the physical device

Code:

@interface AppointmentListController : UITableViewController <UIActionSheetDelegate> 
.
.
.

@implementation AppointmentListController
.
.
.

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        [super touchesBegan:touches withEvent:event];
        timeStampStart = event.timestamp;
    }

    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
        NSTimeInterval timeStampEnd = event.timestamp;
        NSTimeInterval touchDuration = timeStampEnd - timeStampStart;

        if(touchDuration > 0.2)
            [super touchesEnded:touches withEvent:event];
        else
            DLog(@" - TOUCH EVENT OCCURS");

        [super touchesEnded:touches withEvent:event];
    }

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top