У меня есть UIScrollView, к которому добавлены подпредставления (картинки). каждый раз, когда пользователь прикасается к изображению в просмотре прокрутки, он ставит галочку поверх него.
NSMutableIndexSet * picturesArray; <- объявлено в .h </p>
- (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event {
if (!self.dragging) {
[self.nextResponder touchesEnded: touches withEvent:event];
NSLog(@"Touch down");
for (UITouch *touch in touches) {
for (int i = 1; i <= [self subviews].count; i++)
{
if(CGRectContainsPoint([[self viewWithTag:i]frame], [touch locationInView:self])){
NSLog(@"touched %d th view",i);
NSArray *subviews = [[self viewWithTag:i] subviews];
UIImageView *view = nil;
view = [subviews objectAtIndex:0];
if(view.hidden){
// add the index
[picturesArray addIndex:i];
view.hidden = NO; //check mark is shown
}else{
[picturesArray removeIndex:i];
view.hidden = YES; //check mark is not shown
}
// UIImageWriteToSavedPhotosAlbum([(UIImageView *)[self viewWithTag:i]image], nil, nil, nil); <- WORKS IF CALLED
}
}
}
}
Вопрос 1: это лучший способ сделать это? Кажется, что использование for (int i = 1; i <= [self subviews] .count; i ++) довольно медленное. Мне в основном нужно захватить, какое подпредставление было затронуто. Я не понял этого, кроме как проходить КАЖДОЕ подпредставление </p>
Функция savePhotos вызывается и в основном ищет, какие из фотографий были затронуты, и сохраняет их в Фотоальбом. Однако вызов UIImageWriteToSavedPhotosAlbum не выполняется. Это в том же файле, что и TouchesEnded. Но когда вызывается в TouchesEnded, он работает.
(IBAction) savePhotos: (id) отправитель {
NSLog (@ "Набор индексов% @", picturesArray);
const NSUInteger arrayCount = picturesArray.count;
NSUInteger * theIndexBuffer = (NSUInteger *) calloc (picturesArray.count, sizeof (NSUInteger));
UIImageWriteToSavedPhotosAlbum ([(UIImageView *) [self viewWithTag: 0] image], ноль, ноль, ноль);
[picturesArray getIndexes: theIndexBuffer maxCount: arrayCount inIndexRange: nil];
для (int i = 0; i
NSLog(@"Element is %d",theIndexBuffer[i]);
UIImageWriteToSavedPhotosAlbum([(UIImageView *)[self viewWithTag:i]image], nil, nil, nil); <- THIS CRASHES
}
}
Вопрос 2. Почему происходит сбой UIImageWriteToSavedPhotosAlbum?