gpt4 book ai didi

objective-c - 如何确定哪个 UIControlEvents 类型导致了 UIEvent?

转载 作者:技术小花猫 更新时间:2023-10-29 11:00:06 26 4
gpt4 key购买 nike

我想做的是设置一堆 UIControl 对象,通过同一个处理程序发送所有事件。该处理程序需要根据触发的 UIControlEvents 类型确定适当的操作。

- (void)handleEventFromControl:(id)sender withEvent:(UIEvent *)event {
UIControl *control = sender;
NSIndexPath *indexPath = [controlIndexPaths objectForKey:control];
UIControlEvents controlEventType = event.type; //PROBLEM HERE

BOOL fire = NO;
NSNumber *eventCheck = [registeredEventsByToolkitIndex objectAtIndex:indexPath.toolkit];
fire = ([eventCheck integerValue] & controlEventType);

if(!fire) {
eventCheck = [registeredEventsByControlIndex objectAtIndex:indexPath.control];
fire = ([eventCheck integerValue] & controlEventType);
}

if(!fire) {
eventCheck = [registeredEventsByIndexPath objectForKey:indexPath];
fire = ([eventCheck integerValue] & controlEventType);
}

if(fire) {
[self.delegate toolkit:self indexPath:indexPath firedEvent:event];
}
}

据我所知,event.type 不是这样工作的。我想避免拥有 UIControl 的子类,因为这对我想做的事情来说太过分了。这里的其他事件部件并不是那么重要;我想要的是在以下设置中使用 target:action: 对之后检查 UIControlEvents 的方法:

- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents

如果有不同的方法来设置发送回 UIControlEventstarget:action:,我会接受。但我没有在文档中看到它。或者,至少,获得UIControl 对象的外部 访问权限,以便我可以获得我想要的类型。

最佳答案

你是对的; UIEvent.type 不能那样工作。在内部,UIControl 子类基本上使用 sendActionsForControlEvents:方法,这意味着他们可以选择将任何他们想要的作为参数。

至于如何知道,简单的答案是为每个控制事件设置一个单独的方法。

关于objective-c - 如何确定哪个 UIControlEvents 类型导致了 UIEvent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6131549/

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