2014-09-17 5 views
2

Я только что установил xcode 6, чтобы проверить, как мое приложение работает с ним.Целевая кнопка Xcode 6 не работает

Кнопка входа в facebook на начальной странице не работает.

Вот мой код:

@property (nonatomic, strong) UIButton *loginButton; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.loginButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 200, 70)]; 
    self.loginButton.center = self.view.center; 
    [self.loginButton setImage:[UIImage imageNamed:@"login_fb.png"] forState:UIControlStateNormal]; 

    [self.view addSubview:self.loginButton]; 
    [self.loginButton addTarget:self action:@selector(loginButtonPressed) forControlEvents:UIControlEventTouchUpInside]; 
} 

-(void)loginButtonPressed 
{ 
     // perform login 
} 

Важно отметить, что приложение начинается с иной точки зрения. В этом представлении контроллер я проверяю, существует ли пользователь или нет, а если нет, я представляю вид входа. Вот этот код:

if ([DCTUserIdentity currentIdentity] == nil) { 
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]]; 
    DCTInitialLoginVC *vc = [sb instantiateViewControllerWithIdentifier:@"InitialLogin"]; 
    vc.delegate = self; 
    [self presentViewController:vc animated:NO completion:^{}]; 
} 

я поставил точку останова в функции loginButtonPressed и он никогда не получает удар, когда я пытаюсь нажав на кнопку .... любая идея, что происходит?

+0

Это весь код? Существуют ли другие подпункты? Любые жесты? Что такое супервизоры? – Wain

+0

На этой странице нет жесты. Приложение запускается на другой странице - на этой странице я проверяю, существует ли пользователь. Если нет, я представляю этот контроллер представления. Код, который я использую для этого: if ([DCTUserIdentity currentIdentity] == nil) { UIStoryboard * sb = [UIStoryboard storyboardWithName: @ "MainStoryboard_iPhone" bundle: [NSBundle mainBundle]]; DCTInitialLoginVC * vc = [sb instantiateViewControllerWithIdentifier: @ "InitialLogin"]; vc.delegate = self; [self presentViewController: vc animated: NO завершение:^{}]; } –

+0

Я пошел вперед и вставил код в сообщение, чтобы сделать его более читаемым. –

ответ

0

Оказывается, что это на самом деле не ошибка, но несовместимость проблема ориентации IOS 7 устройств с помощью Xcode 6. ecotax's post описывает это более подробно, но вот ответ от компании Apple DTS:

В iOS 7, представления содержимого ячеек сами по себе определяют путем авторазрешения масок. В iOS 8 это было изменено, ячейки перестали использовать маски автоопределения и начали определять размер содержимого в layoutSubviews. Если нить закодирована в iOS 8, а затем декодирует ее на iOS 7, у вас будет просмотр содержимого без маски авторезистации и никакие другие средства, с помощью которых можно самому самому масштабировать. Поэтому, если вы когда-либо измените кадр ячейки, представление содержимого не будет следовать.

Приложения, развертывающие обратно в iOS 7, должны будут обойти это, самостоятельно определив размер представления контента, добавив авторезистирующие маски или добавив ограничения.

Обход:

- (void)awakeFromNib 
{ 
    // Fix for iOS 7 devices targeted using Xcode 6. 
    self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
} 
+1

Я вижу проблему при запуске приложения на симуляторе ios 8 через xcode 6. Я не думаю, что ваш комментарий относится к этой ситуации. Опять же, кнопка показывает поиск, но я не могу нажать на нее. Для чего стоит попробовать ваше решение, заменив contentView на представление моей кнопки, но это не сработало. –

+0

Не уверен в проблеме симулятора iOS 8. По общему признанию, это решение решает проблему для ячейки (содержащей кнопки, которые не были кликабельными) в представлении коллекции. 'contentView 'в этом контексте представляет собой представление содержимого ячейки. Таким образом, ваша проблема * может отличаться, но они выглядят ужасно похожими. В любом случае, вы можете попробовать просто переопределить 'awakeFromNib' для представления, в котором находится ваша кнопка, и задать маску авторезистирования. Кроме того, обратитесь к исходной ссылке, так как в некоторых сообщениях есть строка, чтобы сначала установить границы представления, что не было необходимо в моей ситуации. – Dalmazio

0

Попробуйте этот код:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.loginButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    self.loginButton.frame = CGRectMake(0, 0, 200, 70); 
    self.loginButton.center = self.view.center; 
    [self.loginButton setImage:[UIImage imageNamed:@"login_fb.png"] 
         forState:UIControlStateNormal]; 

    [self.view addSubview:self.loginButton]; 
    [self.loginButton addTarget:self action:@selector(loginButtonPressed:)  
       forControlEvents:UIControlEventTouchUpInside]; 

} 

И задержите DCTInitialLoginVC объект с сильным указателем.

Смежные вопросы