我的应用程序遇到了一个小问题。
我基本上有一系列 UIButtons
在 UIScrollView
中添加为 subview 这是 Nib 的一部分。每次我点击一个按钮时,在突出显示按钮之前都会有明显的延迟。在按钮变暗并显示为选中之前,我必须按住它大约半秒钟。
我假设这是因为 UIScrollView
需要确定触摸是滚动还是针对 subview 的触摸。
无论如何,我有点不确定如何进行。我只是希望按钮在我点击它时立即显示为已选中。
感谢任何帮助!
编辑:
我试过设置 delaysContentTouches
NO 但滚动变得几乎不可能,因为我的大部分 scrollView 都充满了 UIButtons
.
最佳答案
Jeff 的解决方案对我来说不太管用,但这个类似的解决方案确实适用:http://charlesharley.com/2013/programming/uibutton-in-uitableviewcell-has-no-highlight-state
除了覆盖 ScrollView 子类中的touchesShouldCancelInContentView
之外,您还需要将delaysContentTouches
设置为false
。最后,您需要为按钮返回 true
而不是 false
。这是来自上述链接的修改示例。正如评论者所建议的那样,它专门检查 UIControl
的任何子类而不是 UIButton
,以便此行为适用于任何类型的控件。
objective-C :
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
self.delaysContentTouches = false;
}
return self;
}
- (BOOL)touchesShouldCancelInContentView:(UIView *)view {
if ([view isKindOfClass:UIControl.class]) {
return true;
}
return [super touchesShouldCancelInContentView:view];
}
swift 4:
override func touchesShouldCancel(in view: UIView) -> Bool {
if view is UIControl {
return true
}
return super.touchesShouldCancel(in: view)
}
关于ios - 在 UIScrollView 中,UIButton 触摸延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642547/