UITableView 屏蔽了左右滑动事件. 通过重载的方式可以注入事件touch事件, 供开发者使用..
1 //
2 // TouchTableView.h
3 // i2fBank4Iphone
4 //
5 // Created by khan.lau on 13-1-8.
6 // Copyright (c) 2013年 khan.lau. All rights reserved.
7 //
8
9 #import <UIKit/UIKit.h>
10
11
12 @protocol TouchTableViewDelegate <NSObject>
13 @optional
14 - (void)tableView:(UITableView *)tableView touchesBegin:(NSSet *)touches withEvent:(UIEvent *)event;
15 - (void)tableView:(UITableView *)tableView touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
16 - (void)tableView:(UITableView *)tableView touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
17 - (void)tableView:(UITableView *)tableView touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
18 @end
1 //
2 // TouchTableView.m
3 // i2fBank4Iphone
4 //
5 // Created by khan.lau on 13-1-8.
6 // Copyright (c) 2013年 khan.lau. All rights reserved.
7 //
8
9 #import "TouchTableView.h"
10
11 @implementation TouchTableView
12
13 @synthesize touchDelegate = _touchDelegate;
14
15 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
16 [super touchesBegan:touches withEvent:event];
17
18 if ([_touchDelegate conformsToProtocol:@protocol(TouchTableViewDelegate)] &&
19 [_touchDelegate respondsToSelector:@selector(tableView:touchesBegin:withEvent:)])
20 {
21 [_touchDelegate tableView:self touchesBegin:touches withEvent:event];
22 }
23 }
24
25 - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
26 [super touchesCancelled:touches withEvent:event];
27
28 if ([_touchDelegate conformsToProtocol:@protocol(TouchTableViewDelegate)] &&
29 [_touchDelegate respondsToSelector:@selector(tableView:touchesCancelled:withEvent:)])
30 {
31 [_touchDelegate tableView:self touchesCancelled:touches withEvent:event];
32 }
33 }
34
35 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
36 [super touchesEnded:touches withEvent:event];
37
38 if ([_touchDelegate conformsToProtocol:@protocol(TouchTableViewDelegate)] &&
39 [_touchDelegate respondsToSelector:@selector(tableView:touchesEnded:withEvent:)])
40 {
41 [_touchDelegate tableView:self touchesEnded:touches withEvent:event];
42 }
43 }
44
45 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
46 [super touchesMoved:touches withEvent:event];
47
48 if ([_touchDelegate conformsToProtocol:@protocol(TouchTableViewDelegate)] &&
49 [_touchDelegate respondsToSelector:@selector(tableView:touchesMoved:withEvent:)])
50 {
51 [_touchDelegate tableView:self touchesMoved:touches withEvent:event];
52 }
53 }
54
55 @end
56
调用方法 :
1. 头文件中加入delegate
@interface MoneyViewCtl : UIViewController<UITableViewDataSource, UITableViewDelegate, SDWebDataDownloaderDelegate, EGORefreshTableHeaderDelegate, TouchTableViewDelegate>{
IBOutlet UISegmentedControl *_sigTime;
IBOutlet TouchTableView *_tableview;
}
2. .m文件中设置好delegate
_tableview.touchDelegate = self;
3. .m文件中实现如下事件
#pragma mark - TouchTableViewDelegate lifecycle
- (void)tableView:(UITableView *)tableView touchesBegin:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"touchesBegin");
}
- (void)tableView:(UITableView *)tableView touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"touchesCancelled");
}
- (void)tableView:(UITableView *)tableView touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"touchesEnded");
}
- (void)tableView:(UITableView *)tableView touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"touchesMoved");
}
剩下的事情就可以自己发挥了