У меня была проблема, подобная этой в моей образовательной игре QPlus. Меня это беспокоило, потому что у меня был «один и тот же» код в двух связанных приложениях, а у них не было ошибки. Оказалось, что ошибка была в том, что метод селектора не был объявлен в заголовочном файле. Я работаю в Xcode 4.2.
Подробности ниже:
В .м:
tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(emailLabelPressed)];
tapRecognizer.numberOfTapsRequired = 1;
[aLabel addGestureRecognizer:tapRecognizer];
[aLabel setUserInteractionEnabled:YES];
А потом в .m:
- (void) emailLabelPressed {
//подробности
}
Это прекрасно работает в симуляторе, но на реальном устройстве интерфейс электронной почты, представленный модально, не будет редактироваться. Вы можете отправить или сохранить как черновик, но без редактирования.
Затем добавьте это в файл .h:
- (пустот) emailLabelPressed;
И вуаля, на устройстве работает. Конечно, в этом была разница со связанными приложениями - у них обоих был метод, объявленный в заголовочном файле. Я бы классифицировал это как ошибку iOS, но, будучи таким начинающим разработчиком, я бы не стал этого знать.
Исходя из этого, вы можете убедиться, что ваш метод селектора moveAlert: объявлен в вашем заголовочном файле.
Наслаждайтесь
Дэмиен