Вращение основано на проблеме касания - PullRequest
0 голосов
/ 10 марта 2011

Я делаю простой циферблат, который вращается, когда вы проводите по нему пальцем.Он вращается отлично, но он также вращается, когда я касаюсь любого места на экране и перетаскиваю палец.

Как я могу ограничить первые прикосновения только внутри моего объекта просмотра изображений?или где я ошибаюсь?

это мой код проблемы:

- (id)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];
    if (self) {

        UIImage *image1 = [UIImage imageNamed:@"nav@2x.png"];

        wheelfrom = [[UIImageView alloc] initWithImage:image1];
        wheelfrom.frame =CGRectMake(10, -130, 300, 300);


        [self addSubview:wheelfrom];

    }
    return self;
}



-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    UITouch *touch =[[[event allTouches] allObjects] lastObject];   
    firstLoc = [touch locationInView:self];

}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

    UITouch *touch =[[[event allTouches] allObjects] lastObject];
    CGPoint curLoc = [touch locationInView:self];


    float fromAngle = atan2( firstLoc.y-wheelfrom.center.y, 
                            firstLoc.x-wheelfrom.center.x );
    float toAngle = atan2( curLoc.y-wheelfrom.center.y, 
                          curLoc.x-wheelfrom.center.x );

    float newAngle = angle + (toAngle - fromAngle);

    CGAffineTransform cgaRotate = CGAffineTransformMakeRotation(newAngle);
    wheelfrom.transform = cgaRotate;


angle = newAngle;   
}

Спасибо за вашу помощь!

Ответы [ 3 ]

1 голос
/ 10 марта 2011

Вы пытаетесь так,

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [[event allTouches] anyObject];

    CGPoint location = [touch locationInView:self.view];


    if(CGRectContainsPoint(wheelfrom.frame, location))
    {
         //do your things            
    }
}
0 голосов
/ 10 марта 2011

Внутри -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event, убедитесь, что firstLoc находится в пределах вашего диапазона.

0 голосов
/ 10 марта 2011

Вы можете попробовать, проверив, находится ли точка касания в рамке вида изображения. Делайте то, что хотите, только если да.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...