Я работаю над заданием для класса, и мне нужно немного руководства. Я работаю с приложением, которое преобразует событие касания и последующее перетаскивание пальцем в рисунок на экране. Мне нужно выяснить, как сохранить каждый рисунок в массиве и удалить их все в ответ на событие встряхивания.
Это довольно просто - есть HomeViewController (UIViewController) и DoodleView (UIView), который занимает окно. HomeViewController имеет свойство doodleview, а в методе viewDidLoad создает экземпляр, присваивает его self.doodleview, а затем вызывает addSubview. Методы touchesBegan, touchesMoved и touchesEnded принадлежат классу doodleview. Прямо сейчас каждый щелчок и перетаскивание удаляет предыдущий.
Мой первоначальный шаг при их сохранении состоял в том, чтобы создать NSMutableArray "doodleViews" свойство HomeViewController, думая, что каждое событие touchesBegan создавало новый экземпляр doodleView, и просто вызывая addSubview для последнего элемента этого массива. Это не сработало, и я не знаю почему. Любые советы приветствуются.
Вот фрагмент из HomeViewController:
- (void)viewDidLoad {
[super viewDidLoad];
CGRect window = [[UIScreen mainScreen] bounds];
self.doodleView = [[DoodleView alloc] initWithFrame:window];
CircleGestureRecognizer *recognizer = [[CircleGestureRecognizer alloc] initWithTarget:self action:@selector(handleCircleRecognizer:)];
[self.doodleView addGestureRecognizer:recognizer];
[self.view addSubview:self.doodleView];
}
Вот фрагмент из DoodleView:
- (void) touchesBegan:(NSSet *) touches withEvent:(UIEvent *) event
{
NSLog(@"touches began");
path = [UIBezierPath bezierPath];
path.lineWidth = 15.0f;
path.lineCapStyle = kCGLineCapRound;
path.lineJoinStyle = kCGLineJoinRound;
UITouch *touch = [touches anyObject];
[path moveToPoint:[touch locationInView:self]];
}
- (void) touchesMoved:(NSSet *) touches withEvent:(UIEvent *) event
{
UITouch *touch = [touches anyObject];
[path addLineToPoint:[touch locationInView:self]];
[self setNeedsDisplay];
}
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
[path addLineToPoint:[touch locationInView:self]];
[self setNeedsDisplay];
}