2016-01-30 1 views
3

Я начал изучать программирование iOS с помощью книги Аарона Хиллегасса, и я обнаружил, что некоторые образцы не работают. Возможно, они не работают, потому что есть новая версия iOS и Xcode. Не могли бы вы объяснить мне, почему этот код не работает? Кнопка создается; однако он не получает прессы.UIButton не активен

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.window.rootViewController = [[UIViewController alloc] init]; 
    button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [button setFrame:CGRectMake(10,50,100,10)]; 
    [button setTitle:@"OK" forState:UIControlStateNormal]; 
    self.window.backgroundColor = [UIColor whiteColor]; 
    [self.window addSubview:button]; 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 

Популярные посоветуете на такого рода вопрос здесь, чтобы добавить

button.userInteractionEnabled = YES; 

, но это не помогает.

Извините, если мой вопрос прост, но я провел несколько часов, чтобы найти ответ здесь и на сайте developer.apple.com.

+0

кнопка даже показывая вверх? – iSkore

+0

Да, я могу его увидеть, но не могу нажать – gurk

+0

добавление целевого действия должно работать –

ответ

2

По какой-то причине, есть вид на верхней части кнопки, что мешает кнопке принимать действия (нажатия). Все, что вам нужно сделать, это добавить:

[self.window bringSubviewToFront:button]; 

Эта строка кода помещает вашу кнопку поверх стека представлений. Cheers

+0

Спасибо большое, это помогло! – gurk

+0

Удивительно, если это ответили на ваш вопрос (или любой другой ответ), пожалуйста, нажмите на чек. Это поможет другим найти правильный ответ. Если это помогло вам ответить на ваш вопрос (или какой-либо другой ответ), проголосуйте по этому вопросу. –

+0

Спасибо, просто сделал это. – gurk

1

попробуйте добавить эти строки

[button addTarget:self action:@selector(hello:) forControlEvents:UIControlEventTouchUpInside]; 

и это метод, который будет вызываться, когда кнопка будет нажата

- (void) hello:(id) sender 
{ 


    NSLog(@"helloooo"); 
} 
+0

Уже пробовали такую ​​вещь, чтобы проверить активность - не работает – gurk

1

Во-первых, у вас есть высота 10, и это довольно мало. Может быть, вы этого не заметите.

Вы можете сделать это в AppDelegate, но, как правило, вы хотите использовать ViewController. Если вы новичок в разработке iOS, вы, конечно же, не хотите иметь что-либо в AppDelegate. Я бы порекомендовал сделать все это в ViewController, потому что он наложен поверх UIWindow.

Кроме того, вы должны добавить, что @ rahul-patel, чтобы даже проверить, включено ли оно или нет.

Обновление: Я полностью согласен с остальными ответами. Все это должно/должно быть сделано. Добавьте, что @ Рахул-Патель и @ мэттью-s имеют

+1

Проблема решена, но спасибо за ваш совет, я прочитаю об этом! – gurk

+0

Yup, похоже, что у @ matthew-s было решение, если это помогло, проверьте, если нет, проверьте или нет. Итак, вы ищете кнопку, которая всегда накладывает UIViewControllers? – iSkore

+0

Проверено ответ Мэтью, спасибо. Я новичок здесь, поэтому просто изучаю правила :) – gurk