我已经将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/