2012-02-28 20 views
6

明らかに、UIImageView対UIImageを誤解してしまいました。イメージ上にジェスチャー(タップ/クリックなど)を登録するために、私はuiimageviewでイメージを持ち、uiimageviewではなくuiimageviewに登録する必要があります。私のイメージをクリック可能にする方法

ように、コードのこの作品は、私の作品:

- (void)drawRect:(CGRect)rect {     
    Obj *obj = ... obj has imageHref which is NSString 

    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]]; 
    [image drawInRect:CGRectMake((self.frame.size.width/2) - (image.size.with/2), (self.frame.size.height/2) - (image.size.height/2), image.size.width, image.size.height)]; 

} 

だけではなく、このようUIImageviewでそれを行うのに、私はそれがクリッカブルになりたいので、私ので、これは私の中心の画像が得られますが、役に立た:

- (void)drawRect:(CGRect)rect {     
         Obj *obj = ... obj has imageHref which is NSString 

         UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]]; 

    CGRect rect1=CGRectMake((self.frame.size.width/2) - (image.size.width/2), (self.frame.size.height/2) - (image.size.height/2), image.size.width, image.size.height); 

    UIImageView *backgroundImageView = [[UIImageView alloc] initWithImage:radioStationImage]; 

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)]; 

    [backgroundImageView addGestureRecognizer:tap]; 

         [backgroundImageView drawRect:rect1]; 

     } 

この画像をクリックすると、クリックしたときに何らかの操作が行われますが、どれくらい難しいのですか?

編集:私は実際に実装しています

:きちんとしたページのスクロールを提供しています

https://github.com/andreyvit/SoloComponents-iOS/tree/master/ATPagingView

。しかし、クリック可能な画面でないページ1の真ん中の画像、2など。

EDIT 2で:

この今日の上の任意の視点?

答えて

2

デフォルトでは、UIImageViewのプロパティはuserInteractionEnabledで、NOに設定されています。

は行います

[imageView setUserInteractionEnabled:YES]; 
+0

私は多分質問を更新し、どこを助けることができます私は – London

7

はカスタムこのため(drawRect:)描画を必要としません。ビューをロードするときは、サブビューとしてUIImageViewを追加します(Interface Builderまたはビューの初期化の仕方によってはloadView)。その後、そのビューにUITapGestureRecognizerを追加することができます。

@ジャックスラッシュノートでは、イメージビューのユーザー対話もオンにする必要があります。


私はあなたがこれをはるかに複雑にしていると信じています。 drawRect:のカスタム図面は必要ありません。 UIImageViewをサブクラス化する必要はありません(リンク@madmik3の参照はiOS4 +とは関係ありません)。そこはおそらく実際のUIViewサブクラスの必要は(あなたがビューコントローラ内でこのすべてを行うことができます)ではありませんが、ここでビューのサブクラスでそれを行うだろう方法は次のとおりです。

- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
    Obj *obj = ... obj has imageHref which is NSString 
    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]]; 
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake((self.frame.size.width/2) - (image.size.with/2), (self.frame.size.height/2) - (image.size.height/2), image.size.width, image.size.height)]; 
    imageView.userInteractionEnabled = YES; 
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)]; 
    [imageView addGestureRecognizer:tap]; 

    [self addSubview:imageView]; 
    } 
    return self; 
} 
+0

から質問しています。私は – London

+0

からファンの方もUIImageViewをオーバーライドして質問してくれるかもしれません。http://stackoverflow.com/questions/1848040/detect-touch-on-uiview-with -interface-builder/4494304#4494304 – madmik3

+1

@ madmik3は、画像を中央に置き、クリック可能にするために必要なものです(うわー)。私はiOSの学習について楽観的だった。 – London

関連する問題