当我在iOS中创建ScrollView的出口时,在ScrollView中单击按钮不响应

当我在iOS中创建ScrollView的出口时,在ScrollView中单击按钮不响应,ios,objective-c,uiscrollview,uiscrollviewdelegate,Ios,Objective C,Uiscrollview,Uiscrollviewdelegate,我在ScrollView外有一个按钮1,在ScrollView内有另一个按钮2。我正在使用故事板。我使用了从两个按钮到不同视图的拖放序列。Button1工作正常,问题在于Button2,无论我点击多少次它都不工作,它只在我点击并拖动时工作(奇怪!!)。当我排除故障时,我发现每当我创建scrollview的出口时,它的行为都是这样的,如果我删除scrollview与出口的连接,它工作正常,但我需要scrollview的出口才能工作。有什么办法可以解决这个问题吗?这是我的视图的一个示例代码,如果有帮

我在ScrollView外有一个按钮1,在ScrollView内有另一个按钮2。我正在使用故事板。我使用了从两个按钮到不同视图的拖放序列。Button1工作正常,问题在于Button2,无论我点击多少次它都不工作,它只在我点击并拖动时工作(奇怪!!)。当我排除故障时,我发现每当我创建scrollview的出口时,它的行为都是这样的,如果我删除scrollview与出口的连接,它工作正常,但我需要scrollview的出口才能工作。有什么办法可以解决这个问题吗?这是我的视图的一个示例代码,如果有帮助的话

- (void)viewDidLoad
{
    [super viewDidLoad];
  self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg.png"]];
    self.scrollView.contentSize =CGSizeMake(320, 500);

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignKeyboard)];
    [self.scrollView addGestureRecognizer:singleTap];
    singleTap.numberOfTapsRequired = 1;
}

-(void) resignKeyboard
{
    [self.view endEditing:YES]; 
}
这就是我定义出口的方式

@property (strong, nonatomic) IBOutlet UIScrollView *scrollView;
请注意,按钮2单击不起作用,但单击并拖动/滑动时不起作用,而不是单次或多次单击


编辑:我检查发现它在simulator 6.1上运行良好,但在5.0上运行不正常。我有类似的问题。我所做的是删除涉及问题视图的整个层次结构(在本例中为按钮2和滚动视图),然后重新创建它们。然后重新创建门店和iBaction


这是因为故事板是一个xml文档,有时候xcode在编写它时会把事情弄糟。

检查按钮2是否在scrollview的范围内。如果按钮的任何部分位于父容器的框架之外,它将不会响应任何事件。通过更改scrollview的背景颜色进行测试。您还可以设置
按钮2.cliptobunds=YES
。如果按钮超出范围,则该部分将被剪裁。

我发现问题是因为添加了点击手势,因为当您的按钮位于scrollview内时,第一次点击它适用于scrollview而不是按钮,所以我所要做的就是检查触摸是否适用于按钮。以下是修复此问题的代码

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if (self.scrollView.superview != nil) {
        if ([touch.view isKindOfClass:[UIButton class]])
             {
            return NO; // ignore the touch
        }
    }
    return YES; // handle the touch

}
添加代理UIgestureRecognitizerDelegate,并在viewdidload的末尾添加此行

singleTap.delegate = self;

你肯定使用segue而不是标准IBAction吗?现在使用segue,也尝试创建IBAction,但仍然存在相同的问题