4

我在 ScrollView 外有一个 Button1,在滚动视图内有另一个 Button2。我正在使用故事板。我已经使用从两个按钮拖放到不同的视图。Button1 工作正常,问题出在 Button2,无论我点击多少次它都不起作用,它只有在我点击并拖动时才起作用(奇怪!!)。当我进行故障排除时,我发现每当我创建滚动视图的出口时,它都会以这种方式运行,如果我删除滚动视图与出口的连接,它工作正常,但我需要滚动视图的出口才能工作。关于如何完成这项工作的任何解决方案?如果有帮助,这是我的视图的示例代码

- (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;

请注意,Button2 Click 确实有效,但单击和拖动/滑动时不能单击一次或多次单击。

编辑:我检查并发现它适用于模拟器 6.1 但不适用于 5.0

4

3 回答 3

3

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

于 2013-09-02T05:45:13.517 回答
2

我发现问题是因为添加了点击手势,因为当你的按钮在滚动视图内时,第一次点击它适用于滚动视图而不是按钮,所以我所要做的就是检查触摸是否适用于按钮。这是解决此问题的代码。

-(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

}

添加委托 UIGestureRecognizerDelegate 并在 viewdidload 最后添加这一行

singleTap.delegate = self;
于 2013-09-02T06:25:27.717 回答
0

我有类似的问题。我所做的是删除涉及有问题的视图(在本例中为按钮 2 和滚动视图)的整个层次结构,然后重新创建它们。然后重新创建网点和 IBAction。

这是因为故事板是一个 xml 文档,有时 xcode 在编写它时会搞砸。

于 2013-09-02T05:44:54.177 回答