#iphone #ios #touch #imageview #touchesbegan
#iPhone #iOS #коснитесь #просмотр изображения #touchesbegan
Вопрос:
Я создаю вращающийся баннер, используя NSTimer, чтобы отслеживать текущее изображение, при этом изображение анимируется из 5 разных изображений. У меня есть touchesBegan, настроенный так, чтобы продолжать обрабатывать событие касания на баннере, если кто-то нажимает на него. Мое доказательство концепции работает, но при переносе его в другой проект оно ломается.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
if ([touch view] == myImageView){
[self getImage];
NSLog(@"%@", currentImage);
}
}
Теперь, когда я добавляю точки останова в свой проект, он отлично воспринимает прикосновение, но когда дело доходит до
если ([сенсорный просмотр] == myImageView)
он не обнаруживает, что к просмотру изображения прикасаются.
Комментарии:
1. Я перестроил его и заставил работать, используя это, я забыл myImageView.userInteractionEnabled =YES; однако в нашем основном проекте это работает не так хорошо.
Ответ №1:
Не уверен, что могло бы вызвать это, но вы пробовали использовать распознаватель пользовательских настроек? Попробуйте что-то вроде приведенного ниже кода и посмотрите, вызывается ли метод.
//Add Gesture Recognizer
UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageSelected)];
tapped.numberOfTapsRequired = 1;
[theImageView addGestureRecognizer:tapped];
//Memory Cleanup
[tapped release];
-(void)imageSelected
{
NSLog(@"Selected an Image");
}
Комментарии:
1. Я только что попробовал это, и это даже не регистрирует, что я коснулся изображения. Я вспоминал об этом, и мое доказательство концепции я закончил до того, как обновился до нового xcode, все еще работающего на iOS 4. Теперь проверка концепции даже не работает. Может ли это быть проблемой с iOS 5?
2. Возможно, я бы создал новый проект, чтобы опробовать ваш POC и посмотреть, не работает ли он по-прежнему.
3. Вы создали новый проект с Xcode 4.2 и iOS5? Если это так, возможно, вы сохраняете / освобождаете объекты, и в iOS5 теперь есть ARC (автоматический подсчет ссылок)
4. Я создал новый проект, и когда я объявляю свой вид изображения в файле .h: @property (неатомный, сохранить) IBOutlet UIImageView * myImageView; Кроме этого, не используется сохранение или освобождение.
5. Хорошо, итак, создаем кнопку точно так же, как я сделал с изображением, и применяем здесь ваш метод, который вы предложили кнопке, он работает просто отлично. Но не для просмотра изображений.
Ответ №2:
Прежде всего, вы должны установить для userInteractionEnabled значение YES в вашем методе viewDidLoad, как показано ниже:
[myImageView setUserInteractionEnabled:YES];
Обратите внимание, что для myImageView проверка взаимодействия с пользователем, включенная с помощью Identity Inspector, у меня не сработала.
Затем измените
UITouch *touch = [[event allTouches] anyObject];
Для
UITouch *touch = [touches anyObject];
таким образом, метод touchesBegan выглядит следующим образом:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if ([touch view] == myImageView) {
// place any code here when myImageView is touched
}
}
Комментарии:
1. Первая строка сэкономила мне много времени. Спасибо.