假设在我的窗口中我有3个视图,主视图在后台,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。