views:

1611

answers:

2

Hi

I've subclassed UITableView (as KRTableView) and implemented the four touch-based methods (touchesBegan, touchesEnded, touchesMoved, and touchesCancelled) so that I can detect when a touch-based event is being handled on a UITableView. Essentially what I need to detect is when the UITableView is scrolling up or down.

However, subclassing UITableView and creating the above methods only detects when scrolling or finger movement is occuring within a UITableViewCell, not on the entire UITableView.

As soon as my finger is moved onto the next cell, the touch events don't do anything.

This is how I'm subclassing UITableView:

#import "KRTableView.h"


@implementation KRTableView

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesBegan:touches withEvent:event]; 
    NSLog(@"touches began...");
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesMoved:touches withEvent:event];
  NSLog(@"touchesMoved occured");   
}

- (void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent *)event {
    [super touchesCancelled:touches withEvent:event];
  NSLog(@"touchesCancelled occured");   
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
  [super touchesEnded:touches withEvent:event];
  NSLog(@"A tap was detected on KRTableView");
}

@end

How can I detect when the UITableView is scrolling up or down?

+3  A: 

You don't need to intercept the event methods. Check the docs for the UIScrollViewDelegate protocol, and implement the -scrollViewDidScroll: or -scrollViewWillBeginDragging: methods as appropriate to your situation.

NSResponder
Thanks! That's exactly what I needed it to do!
Xeph
A: 

Hi NSResponder and Xeph,

Im looking for the solution of the same problem, but I can't get the delegate methode working... I wrote the < UIScrollViewDelegate > at the definition of the custom tableviewcontroller class but the methods never get called...

Ho can I do that? Markus

Markus
Might be because you're using a custom/subclassed UITableView. Try it on a standard UITableView and see if it works.
Xeph
Did you set the delegate outlet of your scrollview?
NSResponder