0

画像付きのスクロールビューがあります。ユーザーはスクロールビューをタッチして、長方形のビューを配置できます。ユーザーがスクロールビューをピンチズームすると、子サブビューが比率に従って自動的にサイズ変更される必要があります。また、ユーザーはタッチ イベントで子ビューを移動またはサイズ変更できる必要があります。これは、スクロール ビューがズームされていない場合は正常に機能しますが、スクロール ビューがズームされている場合は、スクロール ビュー全体が移動するときに子ビューのサイズを変更したりドラッグしたりできません。スクロール ビューのサイズに合わせて子ビューのフレーム サイズを変更しようとしましたが、適切な結果が得られません。

スクロール ビューがズームされているときにタッチ イベントを受け取る方法はありますか

前もって感謝します

4

1 に答える 1

0
@interface UIZoomingViewController : UIViewController <UIScrollViewDelegate>
    @property (strong, nonatomic) UIView* substrate;
@end

@implementation UIZoomingViewController

-(id)init /*your init method*/
{
    if(self = [super init])
    {
        UIScrollView* scrollView = ((UIScrollView*)self.view); /*controller view - UIScrollView*/
        [scrollView setDelegate:self];
        /*set contentsize, min max zoom scale*/

        _substrate = [UIView alloc] initWithFrame:scrollView.bounds];
        [scrollView addSubview:_substrate];

        /*
            if you need zoom view, add to substrate
            [_substrate addSubview:...];
        */
    }
    return self;
}

#pragma mark - UIScrollView delegate implementation

-(UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView
{
    return _substrate;
}

@end

UIScrollViewの後にタッチを受け取る必要がある場合は、サブクラスを作成してください...

@interface UINewScrollView : UIScrollView
@end

@implementation UINewScrollView

-(BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
{
    return YES;
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [[self nextResponder] touchesBegan:touches withEvent:event];
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    [[self nextResponder] touchesMoved:touches withEvent:event];
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    [[self nextResponder] touchesEnded:touches withEvent:event];
}

@end
于 2012-06-26T18:52:09.927 に答える