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
これを機能させる方法は?