Preventing multiple buttons from being touched at the same time
In iOS is there anyway to prevent a UIView containing multiple buttons (siblings) from being simultaneously from bein开发者_运维知识库g touched? For instance, two non-overlapping buttons that are side by side can be tapped at the same time with two touches.
Set UIView.exclusiveTouch.
You can also use below method. If you have two buttons or more, to prevent multiple push at a time.
for e.g,
[Button1 setExclusiveTouch:YES];
[Button2 setExclusiveTouch:YES];
Set this method in your viewDidLoad
or viewWillAppear
Swift 4 Syntax:
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];
}
}
You need to find all buttons on that view and set the "exclusiveTouch" property to true in order to prevent multi touch at the same time.
func exclusiveTouchForButtons(view: UIView) {
for cmp in view.subviews {
if let cmpButton = cmp as? UIButton {
cmpButton.exclusiveTouch = true
} else {
exclusiveTouchForButtons(cmp)
}
}
}
I have tried both multiTouchEnabled and exclusiveTouch but unfortunately
none of them workout for me.I have tried the following code worked
perfectly.
Set this code at .h file
BOOL ClickedBool;
Set the following code at method start.
if(ClickedBool==TRUE)
{
return;
}
else
{
ClickedBool=TRUE;
}
To enable the exclusive touch you need to set the property isExclusiveTouch
for each element.
myView.isExclusiveTouch = true
If you would want that the default behaviour changes you could use the UIAppearance of the UIView class.
UIView.appearance().isExclusiveTouch = true
精彩评论