2017-05-23 2 views
1

J'ai une vue de conteneur qui contient la vue d'un UIPageViewController. C'est à l'intérieur d'un UIViewController et prend tout l'écran. En haut de la vue des conteneurs, j'ai un UIView, couvrant la moitié de l'écran, qui contient un bouton et du texte. Je veux transférer les contacts de UIView au UIPageViewController. C'est ainsi que le UIPageViewController peut toujours être glissé vers la gauche/droite même si l'utilisateur balaie le UIView. Je veux aussi que le bouton puisse être pressé, donc je ne peux pas simplement mettre isUserInteractionEnabled à false sur le UIView.Touches avancées vers UIPageViewController

Comment est-ce que je peux faire ceci?

+1

double possible de [En passant par des touches à UIViews sous] (https://stackoverflow.com/questions/9026097/passing-through-touches-to-uiviews-underneath) –

Répondre

1

hitTest est la méthode qui détermine qui doit consommer les touches/gestes.

Ainsi, votre "UIView, couvrant la moitié de l'écran" peut sous-classer par exemple NoTouchHandlerView comme. Et puis cette vue ne consommera pas de touches. Il passerait alors aux vues sous lui.

class NoTouchHandlerView: UIView 
{ 
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? 
    { 
     if let hitTestView = super.hitTest(point, with: event), hitTestView !== self { 
      return hitTestView 
     }else { 
      return nil 
     } 
    } 
} 
+0

Ce 'a une NoTouchHandlerView' "UIButton" dans si, cela va-t-il désactiver le 'UIButton'? – Tometoyou

+0

@Tometoyou voir la mise à jour – BangOperator