2

画像を別のビューにドラッグ アンド ドロップする必要がありUIScrollViewます。scrollView touch の外側で動作します。ただし、スクロールビュー内のタッチは機能しません。などの方法を使用しました。私を助けてください。UIImageViewsUIScrollViewtouchesBegantouchesMoved

-(IBAction)selectBut:(id)sender
{

 scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(x,y,w,h)];

 scrollView.userInteractionEnabled = YES;

 int y = 0;

 for (int i = 0; i < [myArray count]; i++) {

UIImageView *image = [[UIImageView alloc]initWithFrame:CGRectMake(0, y, 75, 30)];

 image.userInteractionEnabled = YES;

  y=y+35;

 [scrollView addSubview:image];

}

[self.view addSubview:scrollView];

[scrollView setContentSize:CGSizeMake(150, 300)]

}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

   UITouch *touch = [touches anyObject];

    if ([touch tapCount] == 1) {

        NSLog(@"One touch !!");
    }

}
4

4 に答える 4

5

から継承UIImageViewした独自のビューでをカスタマイズする必要があります。そのカスタマイズされたサブクラスで touch メソッドを提供し、..UIImageViewUIScrollView

のサブビューはメソッドを直接UIScrollview呼び出すことはありません。追加されたサブビュー/カスタマイズされたビューのプロパティtouchesBeganを取得するには、サブビューでカスタマイズする必要があります。touchesBegan

私はImageViewのサブクラスを取ると言うつもりです

CustomImageView *imageView = [[CustomImageView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
[imageView setUserInteractionEnabled:YES];
[scrollView addSubview:imageView];
[imageView release];

CustomImageViewクラスはUIImageViewのように継承する必要があります

 @interface CustomImageView : UIImageView
  {
  }

# .m ファイルで

  #import "CustomImageView.h"

@implementation CustomImageView


    - (id)initWithFrame:(CGRect)frame
   {
self = [super initWithFrame:frame];
if (self) {

}
return self;
}



    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
      NSLog(@"%s", __FUNCTION__);

     }

    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {


    }

    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {


    UITouch *touch = [touches anyObject];

      if ([touch tapCount] == 2) {
    drawImageView.image = nil;
    return;
    }

     }
于 2013-02-26T06:03:21.463 に答える
3

スクロール ビュー内でのタッチを有効にするために、タップ ジェスチャ レコグナイザーをスクロール ビューに追加します。

UITapGestureRecognizer *singlTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(methodName:)];
singlTap.cancelsTouchesInView = NO; //Default value for cancelsTouchesInView is YES, which will prevent buttons to be clicked
[scrollViewName addGestureRecognizer:singlTap];

次に、指定されたメソッドでコードを記述します。

-(void)methodName:(UITapGestureRecognizer *)gesture
{
     //your code here
}
于 2013-02-26T06:00:52.917 に答える
2

これが役立つかどうかはわかりません。しかし、 のexclusiveTouchプロパティをUIImageViewに設定してみてくださいYES

于 2013-02-26T06:03:47.127 に答える
0

スクロールビューを IBOutlet として追加しましたか? それが xib からのもので、あなたが言うように、スクロール内ではなくスクロールの外側でタッチが利用できる場合、タッチイベントを禁止するスクロールビューの userInteractionEnabled のチェックを誤って外した可能性があると思います。そして、UIImageViews をサブビューとして UIScrollView に追加しました。UIImageView の場合、最初にuserInteractionEnabledYESに設定し、必要に応じてジェスチャを追加してイベントを取得するか、touchesBegan、touchesMovedメソッドを使用する必要があります。インタラクションを有効に設定しない限り、UIImageView でタッチ イベントを受け取ることはありません。親ビューがUIScrollViewの相互作用が無効になっていることを意味する場合、UIImageViewにも触れません。お役に立てれば :)

于 2013-02-26T06:15:18.240 に答える