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://*.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
}
}
他们不在阵。可以在XIB中设置它们吗? – DavidNg 2012-08-12 04:55:06