Я знаю, что этот вопрос, кажется, уже задан и дан ответ, но я не могу решить свою проблему.
Я хочу переместить объекты моего обзора, чтобы следовать горизонтальным слайдам пальца (переход к предыдущей или следующей странице)
Для этого я использую методы TouchesBegan, TouchesMoved и TouchesEnded.
Он отлично работает, когда касания начинаются на фоне просмотра, но не работает, когда касания начинаются с uibuttons.
Чтобы решить эту проблему, я создал подклассы uibuttons, которые я хочу разрешить жестом, и он работал нормально, когда я был на xCode 3.x и iOS 4.x.
Сегодня я только что установил OSX Moutain Lion и начал работать над xCode 4.4 и iOS 5.1.1 (iPAD). И вот я с тем же приложением, которое работало нормально и больше не работает.
Вот мой подкласс UIButton:
// myUIButton.h
#import <UIKit/UIKit.h>
@interface myUIButton : UIButton
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
@end
// myUIButton.m
#import "myUIButton.h"
@implementation myUIButton
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"uibutton touches began");
[self.nextResponder touchesBegan:touches withEvent:event];
}
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"uibutton touches moved");
[self.nextResponder touchesMoved:touches withEvent:event];
}
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"uibutton touches ended");
[self.nextResponder touchesEnded:touches withEvent:event];
}
@end
Вот методы моего основного класса:
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"view touches began");
}
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"view touches moved");
}
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"view touches ended");
}
Когда мое прикосновение началось к UIButton, я получаю каждый NSLog из подкласса, но main touchesMoved выполняется только один раз. (кажется, что self.nextResponder работает только один раз)
Изменилось ли что-то, из-за чего он не работает на xcode 4.4 или iOS 5.1.1?
Когда я впервые попытался это сделать (на xcode 3.x и iOS 4.x), я нашел решение здесь: Есть ли способ передавать касания на iPhone?
Но это уже не работает ...
Не могли бы вы помочь мне?
Большое спасибо.
РЕДАКТИРОВАТЬ: проблема та же, что и при использовании [super touch ...] вместо или в большем количестве [self.nextResponder touch ...]