Это определенно не правильный способ создания такого приложения.
A UIScrollView
предназначен для прокрутки содержимого, не предназначенного для рисования. И вам не нужен UIImageView
, чтобы нарисовать контент, достаточно простого UIView
.
Здесь вам лучше всего создать один UIScrollView и отключить его прокрутку, потому что вы будете обрабатывать его двумя пальцами, в то время как чертеж будет обрабатываться другим распознавателем жестов.
UIPanGestureRecognizer *twoFingerScrolling = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(onTwoFingerScroll:)] autorelease];
[twoFingerScrolling setMinimumNumberOfTouches:2];
[twoFingerScrolling setMaximumNumberOfTouches:2];
UIPanGestureRecognizer *oneFingerDraw = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(onOneFingerDraw:)] autorelease];
[oneFingerDraw setMinimumNumberOfTouches:1];
[oneFingerDraw setMaximumNumberOfTouches:1];
[yourScollView addGestureRecognizer:twoFingerScrolling];
[yourScollView addGestureRecognizer:oneFingerDraw];
И позже в своем коде вы можете легко обрабатывать оба события, скроллинг:
- (void)onTwoFingerScroll:(UIPanGestureRecognizer*)sender
{
// Calculate the content offset from the shifting that occured
//[yourScrollView setContentOffset:theContentOffset]
}
И рисунок (который может быть сделано Quartz Tookit)
- (void)onOneFingerDraw:(UIPanGestureRecognizer*)sender
{
// Processing the drawing by using comparing:
if (sender.state == UIGestureRecognizerStateBegan)
{ /* drawing began */ }
else if (iRecognizer.state == UIGestureRecognizerStateChanged)
{ /* drawing occured */ }
else if (iRecognizer.state == UIGestureRecognizerStateEnded)
{ /* drawing ended /* }
}
Надежда это помогает.
Вы можете немного задуматься о интерактивности: создайте свой собственный прокручивающий компонент, который использует два пальца для салфетки/касания, а не один палец для прокрутки/панорамирования и коснитесь одним пальцем для рисования. – adig