开发者

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜