【问题标题】:Handling touches within UIScrollview在 UIScrollview 中处理触摸
【发布时间】:2012-08-22 04:17:08
【问题描述】:

我有一个包含 UIScrollView 的视图。 UIScrollView 包含一个 UIImageView (现在只有一个,但以后会有更多)。我希望能够将 UIImageView 从 UIScrollView 拖到 superview 中。

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

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

首先我创建了一个新的基于视图的项目,并在自动创建的“ViewController.h”中 我创建了一个名为滑块的 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

如何做到这一点?

【问题讨论】:

标签: ios xcode uiscrollview scrollview


【解决方案1】:

这里可能会出现一个明显的问题。即,如何区分拖动滚动和拖动图像。我处理这个问题的方法是设置一个点击并按住手势识别器 (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/

【讨论】:

  • 感谢您为我指明正确的方向肖恩。我将暂停滚动视图,直到我更好地理解其他一些概念,但这是我真正想要理解的东西,当我准备好再次解决这个问题时,我知道从哪里开始。 (保存教程页面以防它在那之前消失)再次感谢伙计!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多