Возникли небольшие проблемы с моим приложением. Я подвергаю сомнению мой подход.
Вот изображение ![Sample App](https://i.stack.imgur.com/PPGs9.png)
В основном мне нужно, чтобы цветовое колесо вращалось в прозрачной коробке. То, что у меня до сих пор работает. Я могу перетащить цветовое колесо, и оно будет вращаться. Проблема в том, что я могу коснуться и перетащить «куда угодно» на экране, и он будет вращаться. Я только хочу, чтобы он вращался в «окне».
Я в основном добавил UIView и UIImageView, добавил выходы в ImageView и добавил код в touchesBegan и touchesMoved для выполнения анимации. Колесо является изображением полного круга, а подпредставления «обрезаны», чтобы не показывать нижнюю половину изображения.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *thisTouch = [touches anyObject];
delta = [thisTouch locationInView:wheelImage];
float dx = delta.x - wheelImage.center.x;
float dy = delta.y - wheelImage.center.y;
deltaAngle = atan2(dy,dx);
initialTransform = wheelImage.transform;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint pt = [touch locationInView:wheelImage];
float dx = pt.x - wheelImage.center.x;
float dy = pt.y - wheelImage.center.y;
float ang = atan2(dy,dx);
//do the rotation
if (deltaAngle == 0.0) {
deltaAngle = ang;
initialTransform = wheelImage.transform;
}else
{
float angleDif = deltaAngle - ang;
CGAffineTransform newTrans = CGAffineTransformRotate(initialTransform, -angleDif);
wheelImage.transform = newTrans;
currentValue = [self goodDegrees:radiansToDegrees(angleDif)];
}
}
Сейчас ... Мои вопросы следующие:
- Как я могу заставить TouchSMoved / Begin работать ТОЛЬКО в UIView или UIImageView?
- Должен ли я создать пользовательский UIView для этого колеса, а затем просто добавить его в мой контроллер основного вида?
2.а Если я создам кастом, у меня будет та же проблема с касаниями?