2012-08-27 44 views
1

我有一个包含UIScrollView的视图。 UIScrollView包含一个UIImageView(现在只有一个,但会有更多后者)。我想能够将UIImageView拖出UIScrollView并进入超级视图。在UIScrollview中处理触摸

我已经回顾了每个类似的问题和例子,我可以在网上找到,但仍然无法让我的头了解它是如何工作的。

起初我无法触及注册所有滚动视图。很多搜索后,我已经找到一种方式来获得的touchesBegan登记如下:

首先,我创建了一个新的观点基于项目,并在自动创建的“ViewController.h” 我创建一个IBOutlet名为滑块。

然后在自动创建的“ViewController.m”中创建了UIScrollview。

在IB中,我添加了一个UIScrollView到故事板,然后将它连接到“滑块”IBOutlet。

接下来我将类文件添加到项目。这个新类是UIImageView的子类。我命名这个类“DragableImage”在

然后在IB我放弃了一个图像到UIScrollView中点击它,改变了类“DragableImage”

在我的无效触摸DragableImage.m开始,简单地说它被隐藏,如果点击。

这个工作和触摸注册并使图像消失,但我现在如何将新图像添加到主视图,并让它跟随我的手指?

这是我在代码的方式:

ViewController.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController { 

    IBOutlet UIScrollView *slider; 
} 

@end 

ViewController.m

#import "ViewController.h" 


@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [slider setScrollEnabled:YES]; 
    [slider setContentSize:CGSizeMake(306, 1560)]; 
    [slider setShowsVerticalScrollIndicator:NO]; 
    slider.canCancelContentTouches = NO; 
    slider.delaysContentTouches = NO; 

    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation 
{ 
    return YES; 
} 

@end 

DragableImage.h

#import <UIKit/UIKit.h> 

@interface DragableImage : UIImageView 

@end 

DragableImage .m

@implementation DragableImage 

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

    self.hidden = YES; 
} 

@end 

如何使这项工作?

+0

http://stackoverflow.com/questions/5390364/gesture-recognizer-within-a-uiscrollview会帮助你。 – TheNavigat

回答

0

这里可能会出现一个明显的问题。即,如何区分拖动滚动和拖动图像。我处理这个问题的方法是设置一个轻按手势识别器(http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizers/GestureRecognizers.html)。

一旦你检测到一个按住,你可以设置它,以便进一步的触摸/手势被路由到你拖放代码。你可以在这里找到一个很好的教程: http://www.ancientprogramming.com/2012/04/05/drag-and-drop-between-multiple-uiviews-in-ios/

+0

谢谢你指引我在正确的方向肖恩。我将把scrollview搁置,直到我理解了一些其他的概念更好一些,但这是我真正想要理解的,当我准备再次解决这个问题时,我知道从哪里开始。(保存教程页面以防万一它在此之前消失)再次感谢人! – DelightedD0D