0

我实现了一种基本类型的图片库(非常类似于 iPhone 上的照片应用程序),并且我有一个按钮,按下时会返回。好吧,它有效,但仅在少数情况下有效。图片库基本上是一个 UIPageControl,它有一层 UIScrollView,顶部是 UIImageView。它可以在页面之间传递(因此,在图像之间)。但是该按钮仅在第一页上显示和访问。我使用手势(在本例中为点击)来显示按钮。这个按钮只有在我不移出第一页的情况下才能正常工作,如果我转到第二页然后回到第一页,当我点击屏幕显示按钮时应用程序崩溃,这有点复杂解释那。这是我用来显示按钮的代码:

//.h

@interface ImatgesNouViewController : UIViewController <UIScrollViewDelegate, UIGestureRecognizerDelegate> {
UIScrollView *bgScorllView;        
UIView *bgView;                           
UIImageView *picImageView;      
UIScrollView *picScrollView;   
UIImageView *preImageView;   
UIImageView *nextImageView;
}

//.m
-(void)viewDidLoad{
[super viewDidLoad];
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap:)];
tapGesture.numberOfTapsRequired = 1;
[tapGesture setDelegate:self];
[self.view addGestureRecognizer:tapGesture];
}

然后为图片库加载不同的东西。

-(void) didTap:(id) sender{


if (boto.hidden == YES){

    [picImageView addSubview:boto];



    boto.hidden = NO;
    NSLog(@"apareix");
} else {

    [picImageView addSubview:boto];


    boto.hidden = YES;
    NSLog(@"desapareix");
}

}

我将代码更新为 void 操作,现在我有了更多关于问题的详细信息。使用旧代码,该按钮仅显示在图片库的第一页上。现在它可以显示在图片库的每一页上。现在我知道什么时候崩溃了:如果我点击屏幕以显示按钮并再次点击以隐藏它,它会根据我的需要运行多次。但是,如果这样做之后我想转到其他页面,那么它就会崩溃。我希望有了这些信息,问题会尽快得到解决。

崩溃日志:终止应用程序由于未捕获的异常'NSInternalInconsistencyException',原因是: '(空)' *第一掷调用堆栈:(0x19b6012 0x1448e7e 0x19b5e78 0xedef35 0xff93a2 0x3d5c4f 0x3e7748 0x3e7c9d 0x3ee5ec 0x3f20e7 0x65a89a 0x6599db 0x65b11f 0x65dd6d 0x65dcec 0x655a68 0x3c2fc2 0x3c34a3 0x3a13aa 0x392cf8 0x1800df9 0x1800ad0 0x192bbf5 0x192b962 0x195cbb6 0x195bf44 0x195be1b 0x17ff7e3 0x17ff668 0x39065c 0x1ee8c 0x2395 0x1)libc++abi.dylib:终止调用抛出异常(lldb)

(很抱歉这么晚才发布崩溃日志)

我不知道到底发生了什么以及这次崩溃的原因。可能是在图像之间滑动的手势识别导致了这个崩溃(结合点击手势)。感谢您在高级的帮助!

4

2 回答 2

0

试试这个...

将 action:@selector(didTap) 更改为 action:@selector(didTap:)

将 -(void) didTap{ 更改为 -(void) didTap: (id)sender{

于 2012-10-14T13:45:20.557 回答
0

我找到了我的问题的答案。稍微想了想,我看到按钮之前的顶部有几个对象。因此,我必须将按钮放在顶部,但是通过向视图添加子视图(与其他对象一样)更容易做到。有了这个,按钮总是停留在顶部,然后,通过点击手势和 void 命令,我将其隐藏从是更改为否。这是代码:

- (void)viewDidLoad
{
[super viewDidLoad];    
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap:)];
tapGesture.numberOfTapsRequired = 1;
[tapGesture setDelegate:self];
[self.view addGestureRecognizer:tapGesture];
[self.view addSubview:boto];
[boto setHidden:YES];     }

-(void) didTap:(id) sender
{
if (boto.hidden == YES){
          [self.view addSubview:boto];
    boto.hidden = NO;
    NSLog(@"apareix");

} else {
    [boto removeFromSuperview];
    boto.hidden = YES;
    NSLog(@"desapareix");
    [self.view addSubview:boto];
}
}

感谢每一位帮助我的人,在你们所有人的帮助下,我能够开始做这件看似简单的事情。

于 2012-10-14T16:12:52.340 回答