gpt4 book ai didi

objective-c - 子类化UIButton,但是我无法执行“addTarget:action:forControlEvents:”吗?

转载 作者:行者123 更新时间:2023-12-01 19:22:28 24 4
gpt4 key购买 nike

我已经将UIButton子类化以绘制图形,但是“addTarget”将无法工作。

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

我对此方法没有做任何调整。

按钮图形在“触摸”上正常运行。

如果我使用标准的UIButton,则“addTarget”可以正常工作。

不确定我缺少什么?

谢谢
#import <UIKit/UIKit.h>

@interface CButton : UIButton
{
CGContextRef c;
int myState;
}
@end
#import "CButton.h"

@implementation CButton

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
//NSLog(@"init state: %d", self.state);
return self;
}


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
// myState = 1;
myState = !myState;
// NSLog(@"BeginState: %d", self.state);

[self setNeedsDisplay];
}


- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
// myState = 0;
// NSLog(@"EndState: %d", self.state);
// [self setNeedsDisplay];

}

- (void)drawRect:(CGRect)rect
{
// Drawing code

}
@end

最佳答案

完成事件处理后,您必须从事件处理程序中调用super。该按钮还如何知道触摸来调用您的操作?

例如

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
// myState = 1;
myState = !myState;
// NSLog(@"BeginState: %d", self.state);

[self setNeedsDisplay];

[super touchesBegan:touches withEvent:event]; // you need this
}

话虽这么说,您对原始帖子的评论是正确的,子类化UIButton可能会比较棘手。但是,似乎您已将事情控制在一定范围内(大部分情况下)。祝好运!

关于objective-c - 子类化UIButton,但是我无法执行“addTarget:action:forControlEvents:”吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9577767/

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