UIButton не активен
Я начал изучать программирование iOS с книги Аарона Хиллегаса, и я обнаружил, что некоторые образцы не работают. Может быть, они не работают, потому что есть новая версия iOS и Xcode. Не могли бы вы объяснить мне, почему этот код не работает? Кнопка создается; однако она не получает нажатия.
- (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.
3 ответа:
По какой-то причине сверху кнопки есть вид, который мешает кнопке получать действия (нажатия). Все, что вам нужно сделать, это добавить:
[self.window bringSubviewToFront:button];
Эта строка кода поместит вашу кнопку поверх стека представлений. Ура
Попробуйте добавить эти строки
[button addTarget:self action:@selector(hello:) forControlEvents:UIControlEventTouchUpInside];
И это метод, который будет вызван, когда кнопка будет нажата
- (void) hello:(id) sender { NSLog(@"helloooo"); }
Во-первых, у вас рост 10, и это довольно мало. Может быть, ты не попадаешь в него.
Вы можете сделать это в AppDelegate, но обычно вы хотите использовать
ViewController
. Если вы новичок в разработке iOS, вы, конечно, не хотите иметь ничего из этого в AppDelegate. Я бы рекомендовал делать все это в ViewController, потому что он накладывается поверхUIWindow
.Кроме того, вы должны добавить what @rahul-patel, чтобы даже проверить, включен ли он или нет.
Обновление: я полностью согласен с другими ответами. Все это должно/должно быть сделано. Добавьте то, что есть у @rahul-patel и @matthew-s