Ios [C4]平移识别器和滑块之间的冲突
我正在尝试平移和放大图像。由于平移手势在C4中还不可用,我想我可以在开始时使用滑块。 因此,我在照片中添加了平移手势,如下所示:Ios [C4]平移识别器和滑块之间的冲突,ios,objective-c,c4,Ios,Objective C,C4,我正在尝试平移和放大图像。由于平移手势在C4中还不可用,我想我可以在开始时使用滑块。 因此,我在照片中添加了平移手势,如下所示: -(void)photoToCrop{ photoTaken=[C4Image imageNamed:@"image.jpg"]; photoTaken.height=self.canvas.height; photoTaken.origin=CGPointMake(0, 0); [self.canvas addImage:photoT
-(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];
}
}
它本身也工作得很好。
但试图同时使用两者是行不通的。在这种情况下,只有平移图像才有效,但滑块从未发生任何变化。似乎它从来没有得到任何触发。。。。
有人建议我还可以尝试什么吗?问题是您正在向
画布添加平移手势,而C4Slider
的控制方法实际上是平移手势。因此,附加到画布上的手势采用先例,使用该手势移动照片,而不是将该手势传递到C4Slider
以使其移动
简单的解决方案是将平移手势附加到C4Image
,这样滑块和图像就不会监听相同的事件
我折叠了一些函数,使示例更容易理解
#import "C4WorkSpace.h"
@implementation C4WorkSpace{
C4Image * photoTaken;
C4Slider * zoomSlider;
}
-(void)setup{
photoTaken=[C4Image imageNamed:@"C4Sky.png"];
photoTaken.width=self.canvas.width;
photoTaken.origin=CGPointMake(0, 0);
[self.canvas addImage:photoTaken];
[photoTaken addGesture:PAN name:@"pan" action:@"move:"];
zoomSlider=[C4Slider slider:CGRectMake(0, 0, self.canvas.width-20, 20)];
[self.canvas addUIElement: zoomSlider];
[zoomSlider runMethod:@"sliderWasUpdated:" target:self forEvent:VALUECHANGED];
}
-(void)sliderWasUpdated:(C4Slider*)theSlider{
photoTaken.height=self.canvas.height*theSlider.value;
photoTaken.center=self.canvas.center;
}
@end
我不知道我是否做错了什么,但是如果我运行这个示例,只有平移可以工作,但是我不能更改滑块值……奇怪。如果我将这段代码粘贴到一个新项目中,它就可以正常工作。你是在新项目中使用它还是在你的大项目中使用它?我两个都试过了,但都不起作用。。。在哪个iOS/XCode/…中有什么区别吗。。。是吗?可能吧。我正在使用iOS6测试xcode4.6。我注意到您使用的是XCode 5。我还没有测试过。对不起,是的,我在XCode 5和iOS 7中。。。所以我可以试着用一个步进器看看它是否有效。。。
#import "C4WorkSpace.h"
@implementation C4WorkSpace{
C4Image * photoTaken;
C4Slider * zoomSlider;
}
-(void)setup{
photoTaken=[C4Image imageNamed:@"C4Sky.png"];
photoTaken.width=self.canvas.width;
photoTaken.origin=CGPointMake(0, 0);
[self.canvas addImage:photoTaken];
[photoTaken addGesture:PAN name:@"pan" action:@"move:"];
zoomSlider=[C4Slider slider:CGRectMake(0, 0, self.canvas.width-20, 20)];
[self.canvas addUIElement: zoomSlider];
[zoomSlider runMethod:@"sliderWasUpdated:" target:self forEvent:VALUECHANGED];
}
-(void)sliderWasUpdated:(C4Slider*)theSlider{
photoTaken.height=self.canvas.height*theSlider.value;
photoTaken.center=self.canvas.center;
}
@end