1

我有一个包含 UIScrollView 的视图。UIScrollView 包含一个 UIImageView (现在只有一个,但以后会有更多)。我希望能够将 UIImageView 拖出 UIScrollView 并进入超级视图。

我已经查看了我可以在网上找到的所有类似问题和示例,但仍然无法理解它是如何工作的。

起初我无法在滚动视图中注册所有内容。经过大量搜索,我找到了一种让touchesbegin注册的方法,如下所示:

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

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

在 IB 中,我将 UIScrollView 添加到情节提要,然后将其连接到“滑块”IBOutlet。

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

然后在 IB 中,我将图像放入 UIScrollview 单击它并将类更改为“DragableImage”

在 DragableImage.m 中,我开始进行无效的触摸,并简单地告诉它在单击时隐藏。

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

这就是我的代码方式:

视图控制器.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {

    IBOutlet UIScrollView *slider;
}

@end

视图控制器.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

可拖动图像.h

#import <UIKit/UIKit.h>

@interface DragableImage : UIImageView

@end

可拖动图像.m

@implementation DragableImage

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

    self.hidden = YES;
}

@end

如何使这项工作?

4

1 回答 1

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/

于 2012-08-27T19:25:39.780 回答