2
Мне нужно увидеть touchInside свойства UIControl, но так как он не может работать с помощью KVO. Кто может сказать мне, как решить эту проблему?Как наблюдать за прикосновением свойств UIControl?
#define SB_NORMAL_BORDER_COLOR [UIColor colorWithWhite:0.751 alpha:1.000].CGColor
#define SB_TOUCH_BORDER_COLOR [UIColor colorWithRed:0.077 green:0.627 blue:1.000 alpha:1.000].CGColor
#define SB_OBSERVER_KEYPATH @"touchInside"
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.layer.borderWidth=1.0f;
self.layer.borderColor=SB_NORMAL_BORDER_COLOR;
self.backgroundColor = [UIColor colorWithRed:0.881 green:0.901 blue:0.810 alpha:1.000];
self.layer.cornerRadius=self.bounds.size.width/2;
[self addObserver:self forKeyPath:SB_OBSERVER_KEYPATH options:NSKeyValueObservingOptionNew context:nil];
}
return self;
}
Этот класс является подклассом UIControl.
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
NSLog(@"Observer");
if(![keyPath isEqualToString:SB_OBSERVER_KEYPATH]) return;
BOOL isTouch=[change[@"new"] boolValue];
if(isTouch){
self.layer.borderColor=SB_TOUCH_BORDER_COLOR;
[self sendActionsForControlEvents:UIControlEventTouchUpInside];
}else{
self.layer.borderColor=SB_NORMAL_BORDER_COLOR;
}
}
[Это] (http://stackoverflow.com/questions/1288978/how-to-implement-target-action-mechanism-for-custom -control), вероятно, поможет вам – Jasper
Я хочу знать, почему не удается увидеть свойства touchInside? – Docee