我有一个UICollectionView,其中每个UICollectionViewCell都有一个UIButton作为子视图。 UIButtons响应点击没有问题(它们的目标被触发),但是按钮本身不会改变到选定状态(按钮的外观和感觉没有变化)。我有一个预感,这是因为UICollectionViewCell没有正确地将其触摸事件转发给按钮,但我不确定。即使这样,在这种情况下,我该如何设置,以便按钮的状态正确变化?UICollectionViewCell中的UIButton子视图不改变控制状态
回答
的UIScrollview
(因此UICollectionView
太)有一个名为delaysContentTouches
属性,默认情况下它被设置为YES ,这种改变NO和你的按钮应突出像它应该。
如果我可以建议的替代方案,UICollectionView有称为真棒委托方法
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { }
可能处理click到该小区......如果你正在寻找特定事件发生就像看到的图像更改到按钮的状态,你可以硬编码在...当用户按下按钮做一两件事,当他们释放按钮做的另一件事....
根据文档以及
UIControlStateSe被选中 控件的选定状态。对于许多控件,这个状态对行为或外观没有影响。但其他子类(例如UISegmentedControl类)可能会根据其所选状态而有不同的外观。您可以通过选定的属性检索并设置此值。
在laymens方面。对于一个UIButton“选定国”什么也不做......
如果按钮是假设它的点击时变暗,并且它没有这样做,那么你可能不得不这样做如果编程,但我不完全知道你正在尝试做的...
调光功能与突出显示的状态
UIControlStateHighlighted 强调了控制的状态。当触摸进入和退出过程中以及触摸事件发生时,控件进入此状态。您可以通过突出显示的属性检索并设置此值。
在laymens方面,你触摸它强调
按钮,看看是否按钮改变状态正常,你可以做这样的事情
[button addTarget:self action:@selector(functionToCall:) forControlEvents:UIControlEventAllTouchEvents];
NSLog(@"Selected: %i", button.selected);
NSLog(@"Highlighted: %i", button.highlighted);
NSLog(@"Normal State or not: %i", button.state);
的“functionToCall将被调用时,任何类型的touch甚至发生在按钮上,并且在那个函数中你可以使用这3个NSLogs将打印到你的控制台的不同的UIControlState值,这将显示按钮工作正常,并显示它可能是一个UIViewCollection错误,如果它是UICollectionView ...然后您将不得不以编程方式调暗按钮:3
希望这有助于!
我尝试以编程方式将按钮设置为突出显示的状态,但它仍然无效。 – 2013-05-05 01:20:51
- 1. UIButton不会改变选定状态
- 2. 定制UIcollectionViewCell,使用视图来控制颜色的变化
- 3. 访问子控件的视图状态
- 4. 添加视图控制器到UICollectionViewCell
- 5. 在一个状态视图控制器
- 6. 无法加载视图状态。视图状态必须匹配的控制树。
- 7. 上改变方法与输入子阵营控制父状态
- 8. 为不同状态更改UIButton的渐变
- 9. UIButton不会改变图像
- 10. asp.net 4.0:datagrid使用控制状态或视图状态
- 11. 背面的离子嵌套状态不会改变状态
- 12. UICollectionViewCell子视图大小不正确
- 13. 角UIRouter不与孩子状态改变
- 14. 用户控件中的视图状态
- 15. UIButton的图像不是Hightlight更改或选择状态
- 16. 分段控制改变时更改视图控制器
- 17. 更改视图状态
- 18. UIButton状态改变不会发生,直到接触结束
- 19. 在RecyclerView中更改视图的状态
- 20. 不工作UIButton来自UICollectionViewCell
- 21. 反应本机列表视图不改变状态改变的风格
- 22. Swift - UICollectionViewCell中的UIButton不可点击
- 23. 分段控制来改变视图
- 24. 在状态栏中绘制的视图
- 25. 显示模态视图控制器时的双状态栏
- 26. 状态恢复时的模态视图控制器动画
- 27. 模态视图不会从子控制器中触发
- 28. 如何防止模态视图控制器改变
- 29. 删除UIButton的子视图
- 30. 以编程方式在子视图的控制器中更改子视图
美丽!完美工作。为了好奇,下面是该属性的相关文档:一个布尔值,用于确定滚动视图是否延迟触摸手势的处理。 如果此属性的值为YES,那么滚动视图会延迟处理向下触摸手势,直到它可以确定滚动是否为意图。如果值为NO,滚动视图会立即调用touchesShouldBegin:withEvent:inContentView :.默认值是YES.' – 2013-10-24 03:01:48