Событие UIButton 'Touch Up Inside' не работает. "Touch Down" работает отлично
У меня есть UIButton в UIView, который находится в UIViewController, который я выделил и инициализировал из файла.xib.
При подключении IBAction к событию "Touch Down" UIButton оно срабатывает правильно. Но если я подключу его к событию "Touch Up Inside", он не ответит.
Другие события тоже не работают. "Touch Drag Enter", "Touch Drag Exit", "Touch Up Outside" и т. Д. Только Touch Down.
У кого-нибудь есть идеи, почему это может быть?
Кнопка представляет собой простую кнопку с закругленными углами в контроллере вида. Я загрузил контроллер вида как таковой:
-(void) pushNewViewController
{
MyViewController* newViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[self.view addSubview:newViewController.view];
[newViewController release];
}
Я добавил эту кнопку в прямоугольную кнопку с закругленными углами в MyViewController в IB. Я создал следующие IBActions:
-(IBAction) buttonTouchDown:(id)sender
{
NSLog(@"Button Touch Down Event Fired.");
}
-(IBAction) buttonTouchUpInside:(id)sender
{
NSLog(@"Button Touch Up Inside Event Fired.");
}
В меню IB I нажал на кнопку и перетащил выход Touch Down в MyViewController и выбрал buttonTouchDown:. Сохранено IB XIB.
Когда я запускаю и проверяю кнопку и получаю сообщение журнала "Button Touch Down Event Fired".
Но когда я возвращаюсь к IB, изменяю действие на Touch Up Inside и подключаю его к кнопке TouchUpInside: IBAction и сохраняю. Я проверяю снова, я не получаю ответа.
С уважением, Рич
5 ответов
Прошу прощения за опоздание, но у меня точно такая же проблема. В моем случае это был UITapGestureRecognizer
присваивается родительскому представлению. Так что это хорошая идея, чтобы проверить и распознаватели.
Вы выпускаете новый ViewController.
Хотя добавление newViewController.view в качестве подпредставления сохранит представление, объект newViewController будет иметь счетчик хранения 0.
Вы упомянули сохранение; Вы сохранили как xib, так и файлы MyViewController после внесения изменений? Часто, когда что-то подобное перестает работать для меня, я обнаруживаю, что не сохранил ни xib в IB, ни файл класса в XCode.
У вас есть какие-либо обработчики сенсорных событий, реализованные в коде вашего MyViewController?
Похоже, что ваш UIButton получает только событие touchesBegan, и событие что-то отменяется, прежде чем оно может получить touchesEnded.
Нечто подобное UIScrollView обычно делает, когда он выбирает между прикосновением, которое должно быть перенаправлено к его подпредставлениям, и перетаскиванием, которое должно обрабатываться само по себе.
Хорошо, это было глупое решение, но в xib я связал его с buttonTouchUp снаружи, и это вызывало проблему. Может быть, это поможет:)