У меня есть регулярные OpenGL установки/EAGL происходит:IOS Multi-Touch не работает
@interface EAGLView : UIView {
@public
EAGLContext* context;
}
@property (nonatomic, retain) EAGLContext* context;
@end
@implementation EAGLView
@synthesize context;
+ (Class)layerClass {
return [CAEAGLLayer class];
}
@end
@interface EAGLViewController : UIViewController {
@public
EAGLView* glView;
}
@property(nonatomic, retain) EAGLView* glView;
@end
@implementation EAGLViewController
@synthesize glView;
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
for (UITouch* touch in touches) {
CGPoint location = [touch locationInView:glView];
int index;
for (index = 0; index < gCONST_CURSOR_COUNT; ++index) {
if (sCursor[index] == NULL) {
sCursor[index] = touch;
break;
}
}
}
[super touchesBegan:touches withEvent:event];
}
Эта реализация включает в себя соответствующие touchesEnded/Отменен/Переехал, а также. Код полностью работает и хорошо отслеживает.
Я также убедиться, что я даю правильные значения для всего:
sViewController = [EAGLViewController alloc];
CGRect rect = [[UIScreen mainScreen] applicationFrame];
sViewController.glView = [[EAGLView alloc] initWithFrame:CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height)];
Assert(sViewController.glView);
sViewController.glView.userInteractionEnabled = YES;
sViewController.glView.multipleTouchEnabled = YES;
sViewController.glView.exclusiveTouch = YES;
Все компилируется нормально, но я никогда не получают больше, чем один UITouch. Я не имею в виду ни одного касанияBegan, но индекс никогда не проходит мимо 0. Я также установил точку останова во второй раз, когда он входит в эту функцию, и два пальца не активируют его.
Пожалуйста, объясните, почему добавление этой строки решило вашу проблему. – rgettman
Кажется, что представление не было напрямую связано с контроллером представления, multi-touch не вел себя правильно. –