2010-08-06 4 views
1

Je veux un comportement de l'UITableView comme avec userInteractionEnabled == NO (Le tableau devrait juste cesser d'être déplacé par l'utilisateur). Mais je veux pouvoir l'activer pendant que l'utilisateur se déplace le UITableViewUITableView cancel mouvement

Si je viens de mettre

[self.tableView setUserInteractionEnabled:NO]; 

Ce comportement active après que l'utilisateur cesse de toucher.

Une idée sur comment je pourrais l'accomplir?

Répondre

0

j'ai découvert comment le faire, je ne peux pas croire que je manqué cette propriété:

[myTableView setScrollEnabled:NO]; 
0

Vous pouvez sous-classer UITableView et remplacer le touches touchEnded: withEvent :. Cette méthode est atteinte lorsque l'utilisateur lève le doigt. Comme vous ne voulez peut-être pas désactiver l'interaction de l'utilisateur lorsque l'utilisateur appuie sur l'écran, vous pouvez capturer le point de départ tactile initial et le point de contact tactile. À partir de ces deux éléments, vous pouvez comparer les deltas du Y pour déterminer combien vous voulez que l'utilisateur bouge avant de désactiver l'interaction de l'utilisateur. Voici un code qui vous aidera en cours de route.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch * touch = [touches anyObject]; 
    touchStartPoint = [touch locationInView:self]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch * touch = [touches anyObject]; 
    CGPoint touchEndPoint = [touch locationInView:self]; 
    CGFloat deltaY = touchStartPoint.y - touchEndPoint.y; 

    if (fabsf(deltaY) >= kMinimumYMoved) { 
     self.userInteractionEnabled = NO; 
    } 
} 
+0

Juste une mise en garde: la substitution de la gestion des événements d'un UIScrollView peut être semée d'embûches si vous Je ne suis pas à 100% à l'aise avec ce qui se passe dans le cycle des événements. –

+0

Je sais déjà où arrêter le contact d'être manipulé. Le problème est que la définition de userInteractionEnablet sur NO n'empêche pas le contact d'être manipulé. – Daniel