2016-03-17 68 views
1

我有一个简单的UITableView,我已经添加了一个UIButton到页脚。UITableView添加FooterView按钮有时点击不执行动作

与此类似:

self.btn =[UIButton buttonWithType:UIButtonTypeCustom]; 
self.btn.backgroundColor = darkPurple; 
[self.btn setTitle:@"Submit" forState:UIControlStateNormal]; 
[self.btn addTarget:self action:@selector(btnTapped:) forControlEvents:UIControlEventTouchUpInside]; 
[self.btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
self.btn.frame=CGRectMake(0, 0, self.tableView.frame.size.width, 100); 
self.btn.showsTouchWhenHighlighted = true; 
self.tableView.tableFooterView = self.btn; 

有时候当我得到滚动到TableView中的底部,如果它不能完全解决该按钮将无法执行动作。有时它会闪烁(showsTouchWhenHighlighted),但我需要再次点击它。

我在这里错过了什么?我试过这样的解决方案,但它似乎并没有工作。

UIButton touch is delayed when in UIScrollView

我想它总是处理,即使滚动不解决,不能耽误。

回答

0

我在这里错过了什么?

什么都没有。这就是iOS上的触摸方式。您可以在Mobile Safari中看到相同的内容:如果页面仍在滚动,则点击链接不起作用。你必须等到页面完全停止(“解决”,正如你所说的)。

+0

感谢您的回复。所以没有办法禁用这个?有按钮“闪光”,然后什么都没有发生,这是烦人的。 – aherrick

+0

我同意。我认为这是因为滚动动画正在进行时按钮“吃了触摸”。 (该短语来自几年前的Apple WWDC视频。)您可以通过在按钮上放置UITapGestureRecognizer来解决此问题。要小心,因为您必须在它是按钮本身还是正在响应的手势识别器之间进行调解。 – matt

+0

马特,你能解释一下吗?我已经添加了一个UITapGestureRecognizer,而且它的执行方式完全相同。谢谢! – aherrick