我们如何垂直向上和向下移动视图?

时间:2011-11-23 11:51:00

标签: iphone touch

我的主视图中有一个tableview,我需要通过触摸垂直移动此tableview。

我想在任何位置触摸时向上和向下拖动此桌面视图,当我的手指向上或向下移动时,桌面视图将根据触摸移动。

我的主视图中有很多控制器,所以我只想触摸桌面视图。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;

如何在上述问题中使用这些代表?

提前致谢。

2 个答案:

答案 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;具有此功能。