0

私はUIScrollViewサブビューを持っていUIViewます、ここにUIViewもタイプのサブビューがありUIImageViewます。

のような階層ViewController -> UIScrollView -> UIView -> UIImageView

すべて、UIScrollView, UIView, UIImageView動的に追加され、すべて有効になり、ユーザーがスクロールするとuserInteractionEnabled=YESSIXビューが一度に表示され、次のSIXが表示されます。UIScrollViewUIViews

UITouchイベントを実装して、自分のタッチを検出していますUIImageView

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //I want to detect particular UIImageView
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    //Here, user can move any UIImageView
}

しかし、私はそれに触れることを検出できません。私はここで言われている他のいくつかの方法を試します。UIScrollViewまた、私の心の一部を試してみましたが、下のサブビューではオブジェクトを検出できなかったことがわかりました。

UIViewまた、もう1つ試してみましたが、サブビューとしてを追加しましたself.view。これを知っておくと面白いですが、検出されますtouch

この種の問題を抱えている人はいますか、何か解決策がありますか?どんな助けでもいただければ幸いです。

4

3 に答える 3

1

これを試して:-

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
 UITouch *touch = [[event allTouches] anyObject];
 //sampleImageView is the imageView.
 CGPoint location = [touch locationInView:sampleImageView];
 if ([touch view] == sampleImageView) 
  {
    //.....    
  }
}

これをタッチ検出に使用します。確認してください。お役に立てば幸いです。ありがとう:)

于 2012-04-13T06:11:15.330 に答える
0

//.hファイルを作成します

@interface AppScrollView:UIScrollView {

}

  • (id)initWithFrame:(CGRect)frame;

@終わり

//.mファイルを作成します

「AppScrollView.h」をインポートします

@implementation AppScrollView

  • (id)initWithFrame:(CGRect)frame {if([super initWithFrame:frame]){} return self; }

    • (void)touchesEnded:(NSSet *)touchs withEvent:(UIEvent *)event {

    //ドラッグしない場合は、イベントを次のレスポンダーに送信します

    if(!self.dragging)

    [self.nextResponder touchesEnded: touches withEvent:event]; 
    

    そうしないと

    [super touchesEnded: touches withEvent: event];
    

    }

    @終わり

そして今あなたのUIViewControllerで

//スクロールビュー用のオブジェクトを作成します

AppScrollView * scrollView;

于 2012-04-13T06:25:14.350 に答える
0

あなたができることは1つ、

私はすでに直面している同じ問題なので、UIscrollview で Caustom UIButton を追加し、イメージを設定し、すべてのボタンを UIButton にタグ付けします。この方法は非常にスムーズに機能します。

UIScrollView* scrForSubItem = [[UIScrollView alloc] initWithFrame:CGRectMake(10,2,1024,580)]; 
[scrForSubItem setAlwaysBounceVertical:YES];
scrForSubItem.minimumZoomScale = 1;
scrForSubItem.maximumZoomScale = 3;
scrForSubItem.scrollEnabled = YES;
scrForSubItem.pagingEnabled = NO;
scrForSubItem.directionalLockEnabled = YES;
scrForSubItem.showsVerticalScrollIndicator = YES;
scrForSubItem.backgroundColor = [UIColor clearColor];
scrForSubItem.delegate = self;

int xOffset = 0;
int yOffset = 0;
for (int i = 0; i < [currnetitem count]; i++) {


UIImageView* imgViewBtn=[[[UIImageView alloc]initWithFrame:CGRectMake(xOffset,yOffset,            246,170)] autorelease];

    [imgViewBtn setUserInteractionEnabled:YES];
    [imgViewBtn setContentMode:UIViewContentModeScaleAspectFit];
    imgViewBtn.image=btnImg;

    UIButton *btnSelectTile = [UIButton buttonWithType:UIButtonTypeCustom];
    [btnSelectTile setFrame:CGRectMake(0,0,246,170)];
    [btnSelectTile setTag:i];
    [btnSelectTile setBackgroundColor:[UIColor clearColor]];
    [btnSelectTile addTarget:self action:@selector(scrImagePressed:) forControlEvents:UIControlEventTouchUpInside];
    [imgViewBtn addSubview:btnSelectTile];

    [self.scrForSubItem addSubview:imgViewBtn];
   xOffset += btnSelectTile.frame.size.width+10;

    if(xOffset>scrollWidth)
    {
        xOffset=0;
        yOffset += btnSelectTile.frame.size.height+10;
        [scrForSubItem setContentSize:CGSizeMake(xOffset,yOffset)];
    }
    else{

        [scrForSubItem setContentSize:CGSizeMake(xOffset,170)];

    }

    [self.viewa ddSubview:scrForSubItem]; 

}

于 2012-04-13T06:24:42.953 に答える