サブビュー(写真)が追加されたUIScrollViewがあります。ユーザがスクロールビュー内のピクチャに触れるたびに、それはその上のチェックマークをトグルする。UiScrollViewでどのサブビューに触れても、他の機能ではそれにアクセスできないサブビューをキャプチャしました。
NSMutableIndexSet * picturesArray; < - .H
- (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 ++)を使うのはかなり遅いです。私は基本的にどのサブビューに触れたのかをキャプチャする必要があります。私は各サブビューを通過する以外のことを理解していません
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]、nil、nil、nil);
[picturesArray getIndexes:theIndexBuffer maxCount:arrayCount inIndexRange:nil];なぜそれがUIImageWriteToSavedPhotosAlbumが故障していることである:{
NSLog(@"Element is %d",theIndexBuffer[i]); UIImageWriteToSavedPhotosAlbum([(UIImageView *)[self viewWithTag:i]image], nil, nil, nil); <- THIS CRASHES
}
}
質問2(; I < arrayCount I ++は、I = 0をINT)ため
?
あなたのお返事ありがとうSLF! UiImageViewの子を含意することで何を意味するのでしょうか? autoReleaseの場合 [(UIImageView *)[self viewWithTag:i] image]は基本的にNULLです。自己viewwithTag:私は自動リリースされていますか? – user82383