Кнопка UIB во втором View Controller - Touch Up Inside не работает (Touch Down делает) - PullRequest
1 голос
/ 20 ноября 2011

Я создал новый проект в XCode и использовал новую функцию Storyboard для создания двух разных контроллеров представления.

Первый контроллер представления присоединен к основным файлам ( ViewController.h, Viewcontroller.m ).Второй View Controller прикреплен к собственному набору файлов .h / .m ( NewUserController.m / .h )

Теперь для проблемы, которую я не смог найти решенияза последние часы;

Я добавил кнопку в контроллер второго вида и прикрепил кнопку к IBAction ( verifyNumber ).Когда я присоединяю событие « Touched Up Inside », IBAction никогда не запускается.Тем не менее, когда я присоединяю ' Touch Down ', все работает нормально.

На обоих контроллерах вида выбрано «взаимодействие с пользователем включено», и кроме кнопки, на которой не работает второй контроллер вида »не содержит никаких других элементов.Кроме того, мое руководство executeSegueWithIdentifier работает (переключение с view1 на view2).

Может кто-нибудь определить, где оно пошло не так?

Код:

ViewController.m

- (void)firstStartup {

    // Future use for getting userID

    // Switch to loginview
    [self performSegueWithIdentifier:@"segueLogin" sender:self];       

}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    // Fire firstStartup
    [self firstStartup];

}

NewUserController.h

#import <UIKit/UIKit.h>

@interface NewUserController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *inputNumber;

- (IBAction)backgroundTap;
//- (IBAction)verifyNumber;

- (IBAction)verifyNumber:(id)sender;

@end

NewUserController.m

#import "NewUserController.h"

@implementation NewUserController
@synthesize inputNumber;


// Collect User data & Start Request
- (IBAction)verifyNumber:(id)sender; {

    inputNumber.text = @"testing";

}

- (IBAction)backgroundTap {

    [inputNumber resignFirstResponder];    

}

ОБНОВЛЕНИЕ

Из-за ответа NJonesЯ проверил еще несколько и удалил распознаватель жестов, представленный во втором представлении.После удаления этого распознавателя UIButton работает со всеми событиями (Touched Up Inside).

Блокирует ли распознаватель какие-либо события «касания» наложенных объектов (таких как UIButton)?

1 Ответ

3 голосов
/ 20 ноября 2011

У меня есть несколько мыслей,

1) Почему у вас:

    - (IBAction)backgroundTap;
    //- (IBAction)verifyNumber;

    - (IBAction)verifyNumber:(id)sender;

Существует разница между verifyNumber и verifyNumber:(id)sender, и они могут существовать наодновременно, и оба могут быть подключены в nib.

2) Используете ли вы какие-либо UIGestureRecoginzers на представлении вообще?

3) Является ли эта кнопка пользовательской кнопкой или подклассомUIButton?

4) (я действительно не думаю, что это поможет решить вашу проблему, это просто хорошая практика, и я уже печатаю :)) Использование свойства view для проверки, был ли вызван метод, неокончательнов лучшем случае.Попробуйте добавить оператор log в метод IBAction, например, так:

- (IBAction)verifyNumber:(id)sender; {
    NSLog(@"verifyNumber:");
    inputNumber.text = @"testing";
}
...