Событие 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 снаружи, и это вызывало проблему. Может быть, это поможет:)

Другие вопросы по тегам