我有一个包含UIScrollView的视图。 UIScrollView包含一个UIImageView(现在只有一个,但后面会有更多)。我希望能够将UIImageView拖出UIScrollView并进入superview。
我已经回顾了我可以在网上找到的每个类似的问题和例子,但仍然无法理解这是如何工作的。
起初我无法接触到在滚动视图中注册所有内容。经过大量的搜索后,我找到了一种方法来触摸如下注册:
首先,我在自动创建的“ViewController.h”中创建了一个基于视图的新项目 我创建了一个名为slider的IBOutlet。
然后在自动创建的“ViewController.m”中创建了UIScrollview。
在IB中,我在故事板中添加了一个UIScrollView,然后将其连接到“滑块”IBOutlet。
接下来,我将类文件添加到项目中。这个新类是一个子类os 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 :(得分: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/