En passant le défilement vertical d'un geste UITableView ci-dessous
(édité pour plus de clarté)
J'ai un UITableView. Sur le haut de, qui est une UIView avec un Pan geste attaché. Ce Pan de glisse de gauche et de droite pour modifier la table sous-jacente. J'ai utiliser la poêle geste de la méthode d'action pour déplacer le tableau. Qui fonctionne bien.
Cependant, la UIView & son Pan geste interfère avec up/down du défilement de la UITableView. Comment puis-je envoyer le haut/vers le bas défilement vers la table et de garder la gauche-à droite sur la zone de visualisation?
---------------------------------------
| |
| ---------------------- |
| | | |
| | | |
| | | |
| UITableView | | |
| | UIView | |
| | + | |
| | PanGesture | |
| | | |
| | | |
| | | |
| | | |
| ---------------------- |
| |
| |
---------------------------------------
La méthode déclenchée par le Pan geste, c'est comme cela
-(void)move:(UIPanGestureRecognizer*)sender
{
CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:self.view];
float xTest = fabsf(translatedPoint.x);
float yTest = fabsf(translatedPoint.y);
if ( xTest>yTest)
{
//Move table view left-right.. this works
} else
{
//Send up-down scrolling gesture to table view????? How to?
}
}
Vous devez vous connecter pour publier un commentaire.
Je viens de résoudre un problème similaire, sauf qu'il était à la verticale moules au lieu de la horizontaux. Je ne suis pas sûr à 100% sur votre cas d'utilisation, de sorte que cela peut ne pas être ce que vous cherchez, mais il peut vous conduire dans la bonne direction.
Je sous-classés UIPanGestureRecognizer, et mis en œuvre touchesMoved méthode, et vérifié pour voir si le geste avait une grande horizontale ou à la verticale du changement. Ci-dessous est un extrait. Le crédit appartient à un autre stackoverflow post, mais je ne trouve pas de lien pour le moment. (Désolé d'avance pour la mauvaise mise en forme, la première fois que vous publiez)
Dans mes parent-vue-contrôleur, qui, je crois, serait la UITableView dans ce cas, j'ai aussi mis en œuvre le suivant. Je pense que dans votre cas, vous voulez retourner pas si c'est un panoramique horizontal.
Laissez-moi savoir si ce n'est pas claire.
Bonne Chance!
UIGestureRecognizer
a une propriété qui empêche reconnu gestes de transmettre leurs événements à la vue de la hiérarchie - les sons comme si c'était la bonne option pour vous. Essayer et de le mettre de versNO
sur votre geste recognisers en question.cancelsTouchesInView
Une valeur Booléenne déterminant si des touches sont livrés à un point de vue lorsqu'un geste est reconnu.
Disponible dans iOS 3.2 et versions ultérieures.
De UIGestureRecognizer de référence.
OK, la réponse a été d'ajouter de la casserole à la UITableView au lieu de la UIView. L'-je vérifier pour voir si le geste est à l'intérieur des frontières de l' (maintenant caché dans le xib) UIView, comme suit:
Boom.
Je comprends que vous voulez le geste dans le UIView pour être traitée selon sa direction (verticale -> défiler la table, à l'horizontale -> faire défiler UIView). J'ai lu -ne pas essayer à ce sujet: La UISwipeGestureRecognizer a un attribut direction de la documentation:
Peut-être qui peut vous aider?
EDIT: Oh, et bien, je n'ai pas reconnaître que vous cherchez à un UIPanRecognizer (trop de "glisser" il y a)... Peut-être que vous pouvez passer à la geste de la table lorsque la direction du panoramique est "verticale assez", tel que rapporté par
translationInView:
..?Dans votre Casserole geste de la méthode bref ceci:
Ici vous imiter le défilement de votre table, vue en le changeant de limites de propriété. Mais ce code ne sera pas de rebond en vue tableau. Cet effet peut être obtenu par le gain de rebond de la propriété état au début de pan geste et de l'affectation de cette propriété lors de geste de la fin.
Que je peux faire une idée de vos besoins que vous devez faire défiler la table lorsque vous interagissez un autre point de vue.
Afin de visualiser les calques seront comme:
UINavigationController-->afficher
(Manette de Navigation aura UITableViewController)
UITableViewController (Il aura UiTableView)
Et À la fin
UIView (UINavigationController.vue sous-vue UIView)
Vous voulez donc que si vous ne pan(défilement) sur votre UIView, alors votre TableView défiler correctement.
De sorte que vous besoin afin de rendre une classe de votre UIView(Laisse supposer CustomView).
Puis mettre en œuvre des méthodes suivantes dans votre CustomView classe.
Si vous avez un bouton de la sous-vue à votre CustomView aussi.
Ensuite, vous obtiendrez la sélection sur elle aussi.
Excusez-moi pour mon mauvais explication mais je viens de trouver cette solution pour mon problème et je veux le partager avec vous.
Laissez-moi savoir si vous avez besoin de plus d'explication. Je l'expliquerai plus tard.
Mettre en œuvre les
UIGestureReconizerDelegate
méthode, nommée
.- gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
Il de retour
false
par défaut, mettre en œuvre et de retourtrue.
Et, n'oubliez pas de définir le geste du
delegate
propriété.Apple doc
(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
Lire plus