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

Ios 如何在触摸事件上移动/重新排列视图位置?,ios,view,Ios,View,假设,在我的窗口上有3个视图,主视图在背景中,主视图在前面 前面的每个视图都包含一些内容,我希望在触摸时作为视图的一部分移动。“移动”的意思是“相对于另一个视图重新排列位置”。触摸后,我想“拿起视图及其所有内容,并将其放置在当前由另一个视图占据的位置” 你从哪里开始做这样的事情?像这样的事情: - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UIView *touchedView = [[touche

假设,在我的窗口上有3个视图,主视图在背景中,主视图在前面

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

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

像这样的事情:

- (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;

首先,您需要创建一个手势识别器。大致如下:

    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。

那么,您将如何相对于其他视图移动屏幕上的视图?对不起,你能提供进一步的例子吗?