J'ai vue: DragView et une vue: GameAreaView, et déclarer GameAreaView dans GameViewController.Objectif C drawRect en sous-vue pas appelé à ajouter après super vue et setNeedsDisplay
Le problème est que ma sous-vue personnalisée: DragView n'a pas dessiné comme prévu, il n'y a rien dessiné en super vue.
GameViewController.m
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
...... get touch point , but haven't use it
// Initialise a dragView when user touches in gameAreaView
DragView *agentDragger = [[DragView alloc] initWithFrame:CGRectMake(10, 10,
50, 50)];
[self.gameAreaView addSubview:agentDragger];
[[self gameAreaView] setNeedsDisplay];
}
GameAreaView.m
-(void)drawRect:(CGRect)rect {
NSLog(@"I am GameAreaView Rect!!");
}
DragView.m - (id) initWithFrame: :(cadre CGRect)
-(id) initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
NSLog(@"1.Hi i am in if ");
}
return self;
}
- (void)drawRect:(CGRect)rect {
[MyStyleKitAgent drawAgentNodeWithFrame:_frame
longPressed:_isLongPressed
vname:_name
pressed:_isPressed];
// Test for draw lines
NSLog(@"I am in DragView");
Mais si je change initWithFrame à initwithImage
-(id) initWithImage:(UIImage *) anImage
{
self = [super initWithImage:anImage];
return self;
}
Le sous-vue avec l'image affichée dans GameAreaView, qui n'a pas utilisé drawRect. J'ai également essayé setNeesDisplayInRect, rien ne change. Pourquoi drawRect dans DragView.m n'a pas été appelé lors de l'utilisation de - (id) initwithFrame? Pourquoi cela arrive-t-il? Et comment y remédier?
où avez-vous appelé la vue glisser? –
faire une propriété de votre vue glisser et utiliser [self.dragview setneedsdisplay]; –
Je l'ai appelé dans - (void) touchesEnded: (NSSet *) touche avecEvent: (UIEvent *) événement – iMonkey