在iOS中,有没有办法防止同时点击一个包含多个按钮(兄弟视图)的UIView?例如,两个不重叠的并排按钮可以同时被两个触摸点点击。
可以设置UIView的exclusiveTouch
属性为YES
,这将会使得该视图内部的所有子视图(包括按钮)变得互斥,即同一时间只能响应一个子视图的点击事件。你可以在初始化或者创建视图后使用下面代码来实现:```objc myView.exclusiveTouch = YES; ```
在iOS中,有没有办法防止同时点击一个包含多个按钮(兄弟视图)的UIView?例如,两个不重叠的并排按钮可以同时被两个触摸点点击。
可以设置UIView的exclusiveTouch
属性为YES
,这将会使得该视图内部的所有子视图(包括按钮)变得互斥,即同一时间只能响应一个子视图的点击事件。你可以在初始化或者创建视图后使用下面代码来实现:设置UIView.exclusiveTouch。
您也可以使用以下方法。如果您有两个或更多按钮,以防止同时多次按下。
例如:
[Button1 setExclusiveTouch:YES];
[Button2 setExclusiveTouch:YES];
将这个方法设置在你的viewDidLoad
或者viewWillAppear
中。
Swift 4 语法:
buttonA.isExclusiveTouch = true
buttonB.isExclusiveTouch = true
for(UIView* v in self.view.subviews)
{
if([v isKindOfClass:[UIButton class]])
{
UIButton* btn = (UIButton*)v;
[yourButton setExclusiveTouch:YES];
}
}
func exclusiveTouchForButtons(view: UIView) {
for cmp in view.subviews {
if let cmpButton = cmp as? UIButton {
cmpButton.exclusiveTouch = true
} else {
exclusiveTouchForButtons(cmp)
}
}
}
为了启用独占触摸,您需要为每个元素设置属性isExclusiveTouch
。
myView.isExclusiveTouch = true
如果您想要更改默认行为,可以使用UIView类的UIAppearance。
UIView.appearance().isExclusiveTouch = true
I have tried both multiTouchEnabled and exclusiveTouch but unfortunately
none of them workout for me.I have tried the following code worked
perfectly.
BOOL ClickedBool;
if(ClickedBool==TRUE)
{
return;
}
else
{
ClickedBool=TRUE;
}
-setExclusiveTouch:
需要一个BOOL,而不是NSNumber(如果数字恰好被解释为YES,则可能会起作用,但这并不保证)。我称其为UIView.exclusiveTouch
,因为该属性所定义的类是UIView(UIButton是UIView的子类)。 - tc.makeObjectsPerformSelector:withObject:
发送 BOOL 时,发送任何具有非零地址的对象都将被解释为 YES(是的,[NSNumber numberWithBool:NO]
将表示 YES)。因此,发送nil
将为 NO。在我的示例中,我只想清楚地表明它是一个 YES。至少这是我的风格,因为我不知道更合适的做法 :) - Hlung