1

UIScrollView を含むビューがあります。UIScrollView には UIImageView が含まれています (今のところ 1 つだけですが、後者はさらに増える予定です)。UIImageView を UIScrollView からスーパービューにドラッグできるようにしたいと考えています。

オンラインで見つけることができるすべての同様の質問と例を確認しましたが、これがどのように機能するかについてまだ理解できません。

最初は、スクロールビュー内のすべてを登録するためのタッチを取得できませんでした。多くの検索を行った後、次のように touchesbegan を登録する方法を見つけました。

まず、新しいビュー ベースのプロジェクトを作成し、自動作成された "ViewController.h" で、slider という名前の 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

これを機能させる方法は?

4

1 に答える 1

0

ここで発生する可能性のある明らかな問題が 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/

于 2012-08-27T19:25:39.780 に答える