如何移动/重新排列触摸事件的视图位置?

时间:2011-10-21 14:10:24

标签: ios view

假设在我的窗口中我有3个视图,主视图在后台,2个在前面。

前面的每个视图都包含一些内容,我希望在触摸时将其作为视图的一部分移动。 “移动”是指“相对于另一个视图重新排列位置”。触摸后,我想“拿起所有内容的视图并将其置于当前被另一个视图占据的位置”

enter image description here

你会从哪里开始这样的事情?

2 个答案:

答案 0 :(得分:1)

这样的事情:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UIView *touchedView = [[touches anyObject] view];
    CGPoint location = [[touches anyObject] locationInView:touchedView];
    touchedView.center = location;
}

请参阅UIResponder.h中的这些方法:

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

答案 1 :(得分:0)

首先,您需要创建一个GestureRecognizer。有点像:

    UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap:)];
doubleTap.numberOfTapsRequired = 2;

[self addGestureRecognizer:doubleTap];

并将其添加到您想要的任何视图(或全部三个)。从它的声音,你的主要背景视图是最有意义的。然后创建doubleTap方法,这将使您的一个视图移动到另一个视图的位置:

-(void)doubleTap:(id)sender {
     view1.frame = view2.frame;
     [self bringSubviewToFrom:view1];
}

我还要确保所有子视图内容都根据您希望子视图的行为设置其autoresizingMask。