Событие UIButton 'Touch Up Inside' не работает. «Touch Down» работает отлично - PullRequest
11 голосов
/ 11 октября 2010

У меня есть 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 ]

16 голосов
/ 26 июля 2012

Извините за опоздание, но у меня точно такая же проблема. В моем случае это было UITapGestureRecognizer, назначенное родительскому представлению. Поэтому неплохо проверить и распознаватели.

6 голосов
/ 04 марта 2011

Вы выпускаете новый ViewController.

В то время как добавление newViewController.view в качестве подпредставления сохранит представление, объект newViewController будет иметь счетчик сохранения 0.

2 голосов
/ 20 марта 2011

У вас есть обработчики сенсорных событий, реализованные в коде вашего MyViewController?

Похоже, ваш UIButton получает только событие touchesBegan и событие отменяется чем-то, прежде чем он может получить touchesEnded.

Что-то вроде UIScrollView обычно делает, когда он выбирает между прикосновением, которое должно быть перенаправлено к его подпредставлениям, и перетаскиванием, которое должно обрабатываться само по себе.

2 голосов
/ 08 января 2011

Вы упомянули экономию;Вы сохранили как xib, так и файлы MyViewController после внесения изменений?Часто, когда что-то подобное перестает работать для меня, я обнаруживаю, что не сохранил ни xib в IB, ни файл класса в XCode.

0 голосов
/ 18 августа 2011

Хорошо, это было глупое решение, но в xib я связал его с buttonTouchUp снаружи, и это стало причиной проблемы.Может быть, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...