我的主视图中有一个tableview,我需要通过触摸垂直移动此tableview。
我想在任何位置触摸时向上和向下拖动此桌面视图,当我的手指向上或向下移动时,桌面视图将根据触摸移动。
我的主视图中有很多控制器,所以我只想触摸桌面视图。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
如何在上述问题中使用这些代表?
提前致谢。
答案 0 :(得分:4)
你刚刚上课,继承自UITableview
制作一个类Drag
Drag.h应该是这样的
@interface Drag : UITableView {
CGPoint touchingPoint;
}
并通过包含以下方法修改Drag.m文件
Drag.m
- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
CGPoint pt = [[touches anyObject] locationInView:self];
touchingPoint = pt;
[[self superview] bringSubviewToFront:self];
}
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
{
CGPoint pt = [[touches anyObject] locationInView:self];
[UITableView beginAnimations:nil context:nil];
[UITableView setAnimationDuration:0.1];
CGRect newFrame = self.frame;
newFrame.origin.y += pt.y - touchingPoint.y;
[self setFrame:newFrame];
[UITableView commitAnimations];
}
就是这样。
此外,在您的viewDidLoad
方法中,
把这些行
Drag *objDrag = [[Drag alloc] initWithFrame:CGRectMake(100, 200, 100, 100)];
objDrag.delegate = self;
objDrag.dataSource = self;
[objDrag setUserInteractionEnabled:YES];
[self.view addSubview:objDrag];
请记住:要垂直拖动,您必须触摸表格的分隔符,否则会考虑触摸单元格并滚动而不是拖动。
答案 1 :(得分:0)
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
可用于创建表格,点击视图并获取视图的CGPoint,然后使用这些坐标设置tableview框架。
注意: - 如果使用
方式执行表拖动,最好在用户界面中表示
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
具有此功能。