2010-10-24 21 views
0

Salut tout le monde. J'ai cherché sur le web et n'ai vraiment pas trouvé de problème comme ça. Ma configuration est la suivante: J'essaie de faire une application où un utilisateur fait glisser uiimageviewss sur un uiview à l'intérieur d'un uiscrollview (qui peut zoomer), mais aussi faire glisser l'image vers une corbeille à effacer. Lorsque le scrollview est agrandi, l'utilisateur peut toujours faire glisser car j'ai sous-classé uiimageview et remplacé la méthode touchesMoved. Je veux que l'utilisateur soit capable de faire glisser les uiimages dans une corbeille dans le coin inférieur droit de l'écran. Ce que j'ai implémenté fonctionne déjà quand uiscrollview est une échelle de zoom normale, mais quand vous zoomez, vous ne pouvez pas faire glisser l'image dans la corbeille, car la poubelle est une sous-vue de la vue du contrôleur elle-même. avec l'uiview) et bien sûr n'est pas dans les bonnes coordonnées de l'écran pour l'uiscrollview.Faire glisser uiimageview dans une "poubelle" tout en zoomant sur un uiscrollview

J'ai trouvé une méthode de vue appelée ConvertRect qui convertit un rectangle en coordonnées de n'importe quelle vue que vous donnez à la méthode, mais cela ne semble pas fonctionner. Je fais une vérification à l'intérieur de chaque mapimage (la sous-classe imageview) qui vérifie le cadre de l'uiimageview intersecte le cadre de la poubelle. J'ai donc essayé cette méthode avant de faire cette vérification, mais comme je l'ai dit, cela ne semble pas fonctionner.

Donc, avec toute cette complexité, permettez-moi de dire en un mot mon problème. Je veux faire glisser des images sur une corbeille quel que soit le niveau de zoom de uiscrollview. Je peux faire de la corbeille une partie de uiscrollview mais j'ai besoin d'un moyen de la faire rester dans le coin en bas à droite et de ne pas zoomer quand uiscrollview le fait. Toutes les idées seraient grandement appréciées, merci les gars. :)

Répondre

0

J'ai eu le même défi.

Dans peut seulement décrire en bref:

Lorsque vous commencez à faire glisser l'image RETIRER du UIScrollView et l'ajouter en tant que sous-vue la vue principale de votre ViewController.

Assurez-vous que l'image ne sera pas perdue dans le processus (cela signifie que quelqu'un la retient toujours).

En faisant glisser, vérifiez constamment si votre image est entrée ou a quitté les limites de la poubelle. vous pouvez le faire avec la méthode ci-dessous:

-(void) checkForTrashCan 
{ 
    CGRect rect = [self.delegate.trashCan convertRect:self.view.frame fromView:self.view.superview]; 

    if ([self.delegate.trashCan rectIntersectBounds:rect]) 
    { 
     if (NOT self.isInTrashMode) 
     { 
      [self enterTrashMode]; 
     } 
    } 
    else 
    { 
     if (self.isInTrashMode) 
     { 
      [self exitTrashMode]; 
     } 
    } 
} 

Lorsque la méthode rectIntersectBounds est juste une méthode simple d'extension pour la classe UIView que je l'ai écrit:

-(BOOL) rectIntersectBounds : (CGRect) rect 
{ 
    return CGRectIntersectsRect(self.bounds, rect); 
} 

Lorsque la traînée est terminée vérifier si votre vue est à l'intérieur la poubelle, et agissent en fonction du résultat.