UIScrollView中的iOS 5 UIButtons无法点击

时间:2013-03-25 20:22:42

标签: iphone ios objective-c uiscrollview uibutton

我有一个奇怪的错误,其中UIView内的两个UIButton,在UIScrollView视图内部,在iOS 5上无法点击,但在iOS 6上工作得很好(屏幕截图显示下面的滚动条和地图)

唯一的另一个细节是滚动条视图“向上滑动”以在选择工作站时显示按钮。我已经尝试过选择iOS 5上的按钮了,它们确实受到了打击(视觉上),但事件没有被触发。

编辑:如果我点击并按住模拟器中的按钮,然后将光标向上移动并释放(例如,对于始终可见的UIView部分),事件将触发

Scroller Sample

滚动视图本身具有以下设置,后两者仅为了尝试使按钮在iOS 5上运行(尝试了各种组合)而添加:

self.scrollView.clipsToBounds = YES;
self.scrollView.scrollEnabled = YES;
self.scrollView.pagingEnabled = YES;
self.scrollView.delaysContentTouches = NO;
self.scrollView.canCancelContentTouches = NO;

按钮事件都正确连接,有适当的目标等:

[_updatePriceButton addTarget:self action:@selector(showPriceUpdateBoxWithPrice:) forControlEvents:UIControlEventTouchUpInside];
[_stationDetailsButton addTarget:self action:@selector(stationDetailsSelected:) forControlEvents:UIControlEventTouchUpInside];

处理程序(这里有一个作为示例):

- (void)stationDetailsSelected:(id)sender {
    if ([self.delegate respondsToSelector:@selector(stationDetailsSelected:)]) {
        [self.delegate stationDetailsSelected:_station];
    }
}

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:6)

找到了罪魁祸首 - UIBut对UIVut的坐标错误配置UITapGestureRecognizer:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(stationInfoViewTapped:)];
[infoController.view addGestureRecognizer:tap];

在“tap”初始化后添加以下内容可解决iOS 5中的问题:

[tap setCancelsTouchesInView:NO];