在UITableView中识别左右滑动,实现上下翻页的功能

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

目前有三种方案:

1.

UIScrollView + UITableView。

实现方法,在UIScrollView中,加入UITableView即可

设置UIScrollView的代理和方法

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{intcurrentPostion =scrollView.contentOffset.x;if(currentPostion -0>50) {

NSLog(@"Scroll right now");

}elseif(0- currentPostion >50)

{

NSLog(@"Scroll left now");

}

}

2.利用UISwipeGestureRecognizer

原文地址:http://www.2cto.com/kf/201312/265158.html

-(void)viewDidLoad{

UISwipeGestureRecognizer*recognizer;

recognizer=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeFrom:)];

[recognizer setDirection:(UISwipeGestureRecognizerDirectionRight)];

[[self view] addGestureRecognizer:recognizer];

recognizer=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeFrom:)];

[recognizer setDirection:(UISwipeGestureRecognizerDirectionLeft)];

[[self view] addGestureRecognizer:recognizer];

recognizer=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeFrom:)];

[recognizer setDirection:(UISwipeGestureRecognizerDirectionUp)];

[[self view] addGestureRecognizer:recognizer];recognizer=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeFrom:)];

[recognizer setDirection:(UISwipeGestureRecognizerDirectionDown)];

[[self view] addGestureRecognizer:recognizer];

}-(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer{if(recognizer.direction==UISwipeGestureRecognizerDirectionDown) {

NSLog(@"swipe down");//执行程序}if(recognizer.direction==UISwipeGestureRecognizerDirectionUp) {

NSLog(@"swipe up");//执行程序}if(recognizer.direction==UISwipeGestureRecognizerDirectionLeft) {

NSLog(@"swipe left");//执行程序}if(recognizer.direction==UISwipeGestureRecognizerDirectionRight) {

NSLog(@"swipe right");//执行程序}

}

3.

原文地址:http://www.cppblog.com/Khan/archive/2013/02/27/198100.html

UITableView 屏蔽了左右滑动事件. 通过重载的方式可以注入事件touch事件, 供开发者使用..

#import<UIKit/UIKit.h>@PRotocolTouchTableViewDelegate <NSObject>@optional- (void)tableView:(UITableView *)tableView touchesBegin:(NSSet *)touches withEvent:(UIEvent *)event;- (void)tableView:(UITableView *)tableView touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;- (void)tableView:(UITableView *)tableView touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;- (void)tableView:(UITableView *)tableView touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;@end

#import"TouchTableView.h"@implementationTouchTableView@synthesizetouchDelegate =_touchDelegate;- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

[super touchesBegan:touches withEvent:event];if([_touchDelegate conformsToProtocol:@protocol(TouchTableViewDelegate)] &&[_touchDelegate respondsToSelector:@selector(tableView:touchesBegin:withEvent:)])

{

[_touchDelegate tableView:self touchesBegin:touches withEvent:event];

}

}- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{

[super touchesCancelled:touches withEvent:event];if([_touchDelegate conformsToProtocol:@protocol(TouchTableViewDelegate)] &&[_touchDelegate respondsToSelector:@selector(tableView:touchesCancelled:withEvent:)])

{

[_touchDelegate tableView:self touchesCancelled:touches withEvent:event];

}

}- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

[super touchesEnded:touches withEvent:event];if([_touchDelegate conformsToProtocol:@protocol(TouchTableViewDelegate)] &&[_touchDelegate respondsToSelector:@selector(tableView:touchesEnded:withEvent:)])

{

[_touchDelegate tableView:self touchesEnded:touches withEvent:event];

}

}- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

[super touchesMoved:touches withEvent:event];if([_touchDelegate conformsToProtocol:@protocol(TouchTableViewDelegate)] &&[_touchDelegate respondsToSelector:@selector(tableView:touchesMoved:withEvent:)])

{

[_touchDelegate tableView:self touchesMoved:touches withEvent:event];

}

}@end

调用方法 :

1. 头文件中加入delegate

@interfaceMoneyViewCtl : UIViewController<UITableViewDataSource, UITableViewDelegate, SDWebDataDownloaderDelegate, EGORefreshTableHeaderDelegate, TouchTableViewDelegate>{

IBOutlet UISegmentedControl*_sigTime;

IBOutlet TouchTableView*_tableview;

}@end

2. .m文件中设置好delegate

_tableview.touchDelegate = self;

3. .m文件中实现如下事件

#pragmamark - 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");

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航