0

UIViewスクロールはできるがズームはできないサブクラスがあります。私は autolayout を使用しているので、IOS6 で何か変更があったのではないかと思いました。特に、scrollViewWillBeginZoomingおよびscrollViewDidEndZoomingメソッドが実装されるのはいつですか。私のコードは次のようになります

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.ringSet2 = [[RingView alloc] initWithFrame:CGRectMake(0, 0, 800, 800)];
    [self.ringSet2 setDefaults];

    /// ... more setup for other views but only ringSet2 is scrolled.

    self.scrollview1.delegate=self;
    self.scrollview1.scrollEnabled=YES;
    self.scrollview1.contentSize=self.ringSet2.bounds.size

    self.scrollview1.minimumZoomScale=0.2;
    self.scrollview1.maximumZoomScale=5.0;

    self.ringSet2.userInteractionEnabled=YES;

    // ... needed elsewhere so other views can pick up their dimensionts 

    [self.view setNeedsLayout];
    [self.view layoutIfNeeded];

    /// ... code for additional views

    [self.scrollview1 zoomToRect:CGRectMake(0, 0, 200, 200) animated:YES];
    [self.scrollview1 addSubview:self.ringSet2];

}

-(UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    return self.ringSet2;
}

scrollViewWillBeginZooming何が起こっているのかを追跡するためだけに実装されています。興味深いことに、 スケール値が 1 未満の場合とviewForZoomingInScrollView同様に、1 回だけ呼び出されるように見えますが、呼び出されることはありません。プロパティ ringSet2 が定義されていますscrollViewDidEndZoomingscrollViewWillBeginZooming

@property (strong, nonatomic) IBOutlet RingView *ringSet2;

ビューが弱いと定義されている場合、ビューは表示されません。

4

1 に答える 1

0

これについてお詫び申し上げます。答えは本当にばかです。私は現在、電話がまだIOS 5にある間に、シミュレーターでIOS 6.0で開発しています。シミュレーターでは、ピンチをシミュレートできますが、画面の中央にのみ配置されます。ただし、scrollviewは、最初のビルドではそうではなかった中央にある場合にのみ、この信号を受信します。スクロールビューの長方形を中央に移動すると、問題が修正されました。実際のデバイスでこのテストを間違えることはありません。したがって、コードはOKです。これの上に私の髪を引っ張って3または4夜を失った。

于 2013-01-10T00:04:00.870 に答える