Я думаю, что вы неправильно указали метод действия, измените эту строку на
-(void) goToFirstTrailer:(id)sender {
и где вы устанавливаете действие на
[button1 addTarget:self action:@selector(goToFirstTrailer:) forControlEvents:....
Важным является двоеточие после имени сообщения, поскольку я изменил подпись метода действия, чтобы включить отправителя.
Редактировать Я написал небольшой пример проекта только с imageView в MainWindow.xib
и программно создал кнопку следующим образом
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button1.frame = CGRectMake(0.f, 0.f, 50.f, 50.f);
[button1 setTitle:@"1"
forState:(UIControlState)UIControlStateNormal];
[button1 addTarget:self
action:@selector(goToFirstTrailer:)
forControlEvents:(UIControlEvents)UIControlEventTouchDown];
imageView.userInteractionEnabled = YES; // <--- this has to be set to YES
[imageView addSubview:button1];
[self.window makeKeyAndVisible];
return YES;
}
Это быстро и грязно, и да, я неправильно использую делегат приложения в качестве контроллера представления. Я знаю, что это плохо.
Вот метод действия
- (void) goToFirstTrailer:(id)sender {
imageView.backgroundColor = [UIColor redColor];
}
Установка свойства userInteractionEnabled в родительском imageView имеет значение. Если для него установлено значение NO, которое является значением по умолчанию, никакие события не направляются на кнопку.