Я просто наткнулся на странную ситуацию. У меня есть UIView (назовите это, V), который имеет UIButton в качестве подпредставления. Назовите эту кнопку UIB, кнопка X. Ниже приведен метод, который я использую для цели / селектора кнопки X. Ниже self - это представление V. Параметр отправителя - кнопка X.
Ситуация, которая вызывает у меня проблему, заключается в том, что если я коснусь другой кнопки в моем пользовательском интерфейсе (на панели навигации, нажмите эту кнопку Y), а затем очень быстро коснитесь кнопки X, где действие кнопки Y отключает вид V, I по-прежнему получать сенсорное событие, отправленное на кнопку X.
- (void) buttonAction: (UIButton *) sender
{
NSLog(@"superview: %d", sender.superview.userInteractionEnabled);
NSLog(@"button itself: %d", sender.userInteractionEnabled);
// <snip>
}
Вот вывод:
2014-12-19 16: 57: 53.826 MyApp [6161: 960615] superview: 0
2014-12-19 16: 57: 53.826 MyApp [6161: 960615] сама кнопка: 1
То есть, действие кнопки произошло, а в суперпредставлении кнопки отключено взаимодействие с пользователем! И в подвиде все еще было включено взаимодействие с пользователем !!
Для тех из вас, кто думает, что это кажется искусственным, в пользовательском интерфейсе моего приложения, работающем на iPad (под управлением iOS 8.1.2), это произошло случайно при моем использовании приложения. Это было не то, что я изначально пытался генерировать.
Мысли
Мой текущий обходной путь приведен ниже, но кажется странным, что это необходимо!
- (void) buttonAction: (id) sender
{
NSLog(@"superview: %d", sender.superview.userInteractionEnabled);
NSLog(@"button itself: %d", sender.userInteractionEnabled);
if (! self.userInteractionEnabled) return;
// <snip>
}