Intereting Posts
Как я могу получить всплывающее окно разрешения адресной книги вверху? Сбой приложения после попытки удалить строку из UITableView ДОБАВЛЕНИЕ значений конкретного ключа из NSMutableDictonary (с использованием NSPredicate) Запросы Media Queries for Pixel не работают Разрешенные имена методов / функций в Swift Как проверить «Разрешить полный доступ» в iOS 10? Air для iOS: путь к каталогам с файлами xamarin.ios mp3 потоковое от url останавливается до его окончания Как программно найти файл default.realm в приложении iOS Не удалось загрузить NIB в комплекте Как скрыть элементы панели инструментов, когда UITableView находится в режиме редактирования? (Swift) UITableView в UIView в UIViewController в iOS Xcode Запуск веб-приложения с главного экрана iPad в качестве iPhone-приложения для iPhone? Прочитайте сообщение уведомления о намерениях без выбора из центра уведомлений Soundcloud Google Signin не работает для получения списка композиций

Как наблюдать за сенсорными свойствами UIControl?

Мне нужно наблюдать touchInside свойства UIControl, но так как он не может работать с помощью KVO. Кто может сказать мне, как решить эту проблему?

#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; } } 

Вам нужно добавить целевое действие

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

И обрабатывайте свой код там.

Затем отправьте действие далее в этом методе:

 [self sendActionsForControlEvents:UIControlEventValueChanged];