我的应用程序在窗口中有许多按钮,并且我想将所有按钮都设置为独立触摸。你有什么建议吗?谢谢iOS:在视图中为所有按钮设置专属触摸
回答
你只是想找一个简单的方法来一次设置它们?
如果您在阵列中的所有按钮(例如它们都连接到同一IBOutletCollection),您可以使用键值编码设置数组的exclusiveTouch属性:
[buttonArray setValue:[NSNumber numberWithBool:YES] forKey:@"exclusiveTouch"];
NSArray中,然后将在数组中的每个项目上调用相同的方法。
如果这些按钮都在同一视图中,则可以遍历视图的子视图,测试特定的子视图是否为按钮(或者如果有一组,则测试标记)并分别设置exclusiveTouch。
我刚刚找到这个答案:
#pragma mark Set Buttons Exclusive Touch Yes
-(void)setExclusiveTouchForButtons:(UIView *)myView
{
for (UIView * button in [myView subviews]) {
if([button isKindOfClass:[UIButton class]])
[((UIButton *)button) setExclusiveTouch:YES];
}
}
有一种方法来设置独占触摸到应用中的所有按钮,可能会有所帮助。
#import </usr/include/objc/objc-class.h>
static IMP gOringinalWillMoveToSuperview = nil;
static id newMoveToSuperviewPlusSettingExclusiveTouch(id self,SEL selector,...)
{
va_list arg_list;
va_start(arg_list,selector);
gOringinalWillMoveToSuperview(self,selector,arg_list);
[self setExclusiveTouch:YES];
return nil;
}
-(void)addSettingExclusiveTouchToAllUIViewMethodWillMoveToSuperview
{
gOringinalWillMoveToSuperview = class_getMethodImplementation([UIButton class], @selector(willMoveToSuperview:));
class_replaceMethod([UIButton class], @selector(willMoveToSuperview:), &newMoveToSuperviewPlusSettingExclusiveTouch, "[email protected]:");
}
我应该在哪里粘贴这段代码? – 2014-06-04 19:27:48
@ZuzooVn你应该粘贴此代码之前,任何想要设置独家触摸创建视图。 – CarmeloS 2014-06-06 04:44:43
如果您要实用地添加按钮,请在添加到其超级视图之前,为每个按钮发送消息至按钮[button setExclusiveTouch:YES];
。否则,如果您使用的是xib,则必须将相同的消息发送到viewDidLoad或loadView中的按钮。
-(void)setExclusiveTouchForButtons:(UIView *)myView
{
for (UIView * v in [myView subviews]) {
if([v isKindOfClass:[UIButton class]])
[((UIButton *)v) setExclusiveTouch:YES];
else if ([v isKindOfClass:[UIView class]]){
[self setExclusiveTouchForButtons:v];
}
}
}
然后在viewDidAppear
如果你想设置exclusiveTouch在整个应用程序方法混写 ALL UIButtons会为您提供完美的解决方案调用这个函数。
这个答案解释得非常好:https://stackoverflow.com/a/24534814/976246,它对我来说非常合适。
也通过这篇文章了解如何this (http://nshipster.com/method-swizzling/) tecknique可用于各种目的。
这里是迅速一些代码,将设置独占触摸到所有的按钮在你的ViewController的看法
for button in self.view.subviews {
if(button.isKindOfClass(UIButton)){
(button as! UIButton).exclusiveTouch = true
}
}
- 1. iOS按钮嵌套在视图中没有接收到触摸
- 2. iOS子视图中按钮没有响应触摸。
- 3. react-native在按钮上显示触摸ID视图(iOS)
- 4. ios中的按钮触摸状态
- 5. 按钮titleLabel设置为隐藏YES,再次出现在触摸
- 6. 如何在iOS中将我的所有视图设置为navigationController?
- 7. iOS - 通过视图转发所有触摸
- 8. 触摸按钮时设置背景图片
- 9. 如何在视图中设置触摸位置
- 10. 触摸IOS中的视图时可以触摸点吗?
- 11. iOS向上触摸禁用按钮
- 12. 自定义视图带点击/触摸按钮行为
- 13. iOS在动画视图中设置autolyout符合所有设备
- 14. 将饼图设置为不可触摸
- 15. 触摸内部视图和外部按钮时触发事件
- 16. ImageButton在按钮触摸
- 17. iPhone SDK:如何在Alert视图中触摸按钮时打开Web视图?
- 18. 当我触摸TextView时触摸按钮
- 19. 有没有办法在视图中反转触摸位置?
- 20. 如何在子视图中设置触摸事件?
- 21. 在保存按钮被触摸后重新初始化视图
- 22. 在滚动视图顶部的可触摸信息(i)按钮
- 23. 在后退按钮后导航视图煎茶触摸显示
- 24. 用于触摸设备的CSS按钮?
- 25. iPhone,在调光视图中捕获所有触摸事件
- 26. ios触摸从一个按钮移动到另一个按钮
- 27. 如何在iOS中将图像设置为uialertview按钮?
- 28. 图像视图与可可触摸顶部按钮
- 29. 触摸位置使用按钮swift 3
- 30. iOS子视图不转发触摸。
他们不在阵。可以在XIB中设置它们吗? – DavidNg 2012-08-12 04:55:06