2

画像をパンしてズームしようとしています。C4 ではまだパン ジェスチャが使用できないため、最初はスライダーを使用できると考えていました。だから私はこのように写真にパンジェスチャーを追加しています:

-(void)photoToCrop{
    photoTaken=[C4Image imageNamed:@"image.jpg"];
    photoTaken.height=self.canvas.height;
    photoTaken.origin=CGPointMake(0, 0);
    [self.canvas addImage:photoTaken];
    [self addGesture:PAN name:@"pan" action:@"movePhoto:"];

}
-(void)movePhoto:(UIPanGestureRecognizer *)recognizer {
    CGPoint thePoint=[recognizer locationInView:self.view];
    //C4Log(@"current position:%f,%f",thePoint.x, thePoint.y);
    if (thePoint.x>photoTaken.origin.x &&thePoint.x<photoTaken.origin.x+photoTaken.width && thePoint.y>photoTaken.origin.y &&thePoint.y<photoTaken.origin.y+photoTaken.height) {
        C4Log(@"touched inside+moved");
        [photoTaken move:recognizer];
    }

}

パン ジェスチャを使用しているのは、ユーザーが実際に画像をタブで移動したときだけであり、外側のどこにも移動していない場合 (それは if ステートメントです) だけで完全に正常に動作します。次に、同じ画像をスケーリングするために添付したスライダーもあります。

-(void)sliderSetup{
    [self createAddSliderObjects];
    zoomSlider.minimumValue=0.52f;
    zoomSlider.maximumValue=10.0f;
    //scalefactor=1;
    zoomSlider.value=1.0f;

}
-(void)createAddSliderObjects{
    sliderLabel=[C4Label labelWithText:@"1.0"];
    sliderLabel.textColor=navBarColor;
    zoomSlider=[C4Slider slider:CGRectMake(0, 0, self.canvas.width-20, 20)];

    //positioning
    sliderLabel.center=CGPointMake(self.canvas.width/2,self.canvas.height-NavBarHeight-50);
    zoomSlider.center=CGPointMake(sliderLabel.center.x,sliderLabel.center.y+10);

    //set up action
    [zoomSlider runMethod:@"sliderWasUpdated:"
                   target:self
                 forEvent:VALUECHANGED];
    [self.canvas addObjects:@[sliderLabel, zoomSlider]];
}
-(void)sliderWasUpdated:(C4Slider*)theSlider{
    //update the label to reflect current scale factor
    sliderLabel.text=[NSString stringWithFormat:@"%4.2f", theSlider.value];
    [sliderLabel sizeToFit];

    //scale the image
    C4Log(@"slider:%f",theSlider.value);
    photoTaken.height=self.canvas.height*theSlider.value;
    photoTaken.center=self.canvas.center;
}

また、単体でも問題なく動作します。しかし、両方を同時に使おうとするとうまくいきません。その場合、画像のパンのみが機能しますが、スライダーには何も起こりません。それは今までに何のトリガーも得ていないようです.... 誰かが他に何を試すことができるか提案がありますか?

4

1 に答える 1