1

クリック後に別の画像に切り替わる画像のリストで UIScrollView を作成しようとしています。ケースは、画像の選択をシミュレートすることです。

UIImage の代わりに UIButton を使用しようとしましたが、画像を切り替えるのは非常に簡単でしたが、ボタンを右クリックしてもスクロールできませんでした。ボタン間をクリックしたときだけスクロールしていました。

UIImages を使ってみたところ、スクロールはしやすかったのですが、クリックしても画像を切り替えることができませんでした。

少し掘り下げて、次の投稿を見つけました: Xcode: 画像に触れると画像を変更する方法 (同じ位置)?

それは私が必要とするもののようですが、私は何か間違っています。

私のコード:

//TouchSimpleView.h
#import <UIKit/UIKit.h>

@interface TouchSimpleView : UIImageView {
    id delegate;
}
@property (retain) id delegate;
@end

@interface NSObject (TouchSimpleView)
-(void)didTouchView:(UIView *) aView;
@end


//  TouchSimpleView.m
#import "TouchSimpleView.h"
@implementation TouchSimpleView
@synthesize delegate;

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"touchesBagan");
    if(delegate != nil && [delegate respondsToSelector:@selector(didTouchView:)]) {
        [delegate didTouchView:self];
    }
    [super touchesBegan:touches withEvent:event];
}
@end

私はそのように上記を使用しています:

//  ViewController.h
#import <UIKit/UIKit.h>
#import "TouchSimpleView.h"

@interface ViewController : UIViewController {
    TouchSimpleView *touchView;
    UIImageView *bankImageView;
}

@property (nonatomic, retain) TouchSimpleView *touchView;
@property (nonatomic, retain) UIImageView *bankImageView;
@end


//  ViewController.m
#import "ViewController.h"

@interface ViewController ()
@end

@implementation ViewController
@synthesize touchView;
@synthesize bankImageView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    touchView = [[TouchSimpleView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    touchView.delegate = self;
    [self.view addSubview:touchView];

    bankImageView = [[UIImageView alloc] initWithFrame:touchView.frame];
    bankImageView.image = [UIImage imageNamed:@"1.jpg"];
    [touchView addSubview: bankImageView];
}

- (void)didTouchView:(UIView *)aView {
    NSLog(@"view touched; changing image");
}

@end

最初に述べた UIScrollView はありませんが、この簡単な例を機能させて、UIScrollView に touchView を追加したいと思います。

私はiOSプログラミングの初心者です。お知らせ下さい。

4

2 に答える 2

1

UIImageViewプロパティ userInteractionEnabledが に設定されていることを確認しますYES
デフォルトは ですNO

于 2012-10-23T20:24:47.317 に答える
0

解決策は次のとおりです。

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

    touchView = [[TouchSimpleView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    touchView.delegate = self;
    touchView.userInteractionEnabled = YES;
    touchView.image = [UIImage imageNamed:@"1.jpg"];
    [self.view addSubview:touchView];
}

ありがとう@Mundi

于 2012-10-25T19:57:52.360 に答える