gpt4 book ai didi

iphone - 每个 UIView 的 ExclusiveTouch

转载 作者:行者123 更新时间:2023-11-28 20:37:12 24 4
gpt4 key购买 nike

我有两个 UIView,里面装满了 UIButton。我只想允许一个按钮一次接受每个 UIView 的触摸。也就是说,如果您在每组按钮中有一个手指,我希望多点触控工作,但如果您在同一组中有两个手指,则不会。

当然,在按钮上设置的 exclusiveTouch 确保一次只触摸一个按钮,但它会为整个窗口执行此操作。有没有办法让每个 UIView 只允许一次触摸而不是整个窗口?

更新:以便更好地理解所需的功能。我希望用户能够使用多点触控选择红色和蓝色卡片。简单的。但我不希望他们能够选择两张红牌或类似的东西。问题是,如果我在卡片上打开 exclusiveTouch,一次只能选择整个窗口中的一张卡片。所需的功能是让 exclusiveTouch 仅操作 PER UIVIEW,其中每组卡片都已经包装在自己的 UIView 中。

更新 2: 只是想补充一点,我试图找到一个不涉及子类化或以其他方式覆盖 UIView 的触摸 Controller 的解决方案。这是最后的手段。

Here is an image

最佳答案

当按下一个按钮时,您可以将另一个按钮的 userInteractionEnabled 属性设置为 NO 并在触摸时将其设置回 YES上。

更新 1

对不起,我是个白痴。

更新 2

...

更新 3

我终于回到了 XCode。此代码有效(如果我正确理解您的目标):

@interface ViewController : UIViewController {
NSMutableArray *leftButtonsArray;
NSMutableArray *rightButtonsArray;
}

@end

//

@implementation ViewController

#pragma mark - Objects Processing

- (void)buttonDownAct:(UIButton *)sender {
sender.backgroundColor = [UIColor greenColor];

NSArray *targetArray = nil;
if ([leftButtonsArray indexOfObject:sender] == NSNotFound)
targetArray = rightButtonsArray;
else
targetArray = leftButtonsArray;

for (UIButton *button in targetArray)
if (button != sender)
button.userInteractionEnabled = NO;
}
- (void)buttonUpAct:(UIButton *)sender {
NSArray *targetArray = nil;
if ([leftButtonsArray indexOfObject:sender] == NSNotFound) {
targetArray = rightButtonsArray;
sender.backgroundColor = [UIColor blueColor];
}
else {
targetArray = leftButtonsArray;
sender.backgroundColor = [UIColor redColor];
}

for (UIButton *button in targetArray)
button.userInteractionEnabled = YES;
}

#pragma mark - View lifecycle

- (void)loadView {
leftButtonsArray = [[NSMutableArray alloc] init];
rightButtonsArray = [[NSMutableArray alloc] init];

self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.view.backgroundColor = [UIColor whiteColor];
float desiredWidth = self.view.frame.size.width / 4, desiredHeight = self.view.frame.size.height / 2;

for (int i = 0; i < 4; i++) {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectInset(CGRectMake(desiredWidth * (i % 2), desiredHeight * (i / 2), desiredWidth, desiredHeight), 10, 10);
[button setBackgroundColor:[UIColor redColor]];
[button addTarget:self action:@selector(buttonDownAct:) forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(buttonUpAct:) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];

[self.view addSubview:button];
[leftButtonsArray addObject:button];
}

for (int i = 0; i < 4; i++) {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectInset(CGRectOffset(CGRectMake(desiredWidth * (i % 2), desiredHeight * (i / 2), desiredWidth, desiredHeight), self.view.frame.size.width / 2, 0), 10, 10);
[button setBackgroundColor:[UIColor blueColor]];
[button addTarget:self action:@selector(buttonDownAct:) forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(buttonUpAct:) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];

[self.view addSubview:button];
[rightButtonsArray addObject:button];
}
}

@end

关于iphone - 每个 UIView 的 ExclusiveTouch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9982847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com