J'ai aussi été aux prises avec ce problème et j'ai fait beaucoup de recherche sur les différentes réponses sur stackoverflow et sur internet, la solution est différente selon la source du problème. Pour la plupart des cas, vous devez effectuer les opérations suivantes avec l'élément qui est censé prendre action de l'utilisateur (appuyez/cliquez sur etc.):
myButton.userInteractionEnabled = YES;
En particulier pour les UILabel/UIImageView, par défaut, l' userInteractionEnabled
drapeau est - NO
.
Si vous êtes le chargement de la vue à partir d'un xib, vous devez vous assurer que, à partir de la cellule personnalisé de vue, le contenu de la vue, et l'élément que vous voulez l'action de l'utilisateur est activée, tous ont la case cochée:
Dans l'exemple ci-dessus, DeviceViewCell, l'Affichage du Contenu et Bouton élément tous ont "l'Interaction de l'Utilisateur Activé lacase à cocher" cochée.
Si la cellule personnalisé est mis en œuvre comme une sous-classe de UITableViewCell, et la coutume vue sur les cellules est chargé à partir d'un autre fichier xib de façon dynamique, vous AVEZ À FAIRE une chose de plus qui est source de confusion pour la plupart des gens, mais je vais vous expliquer pourquoi plus tard:
Dans la cellule personnalisé de la méthode d'initialisation, vous devez effectuer les opérations suivantes:
self.contentView.userInteractionEnabled = NO
où self
est la sous-classe de UITableViewCell vous avez créé. Encore une fois, SI la cellule personnalisé est mis en œuvre comme une sous-classe de UITableViewCell, et la coutume vue sur les cellules est chargé à partir d'un autre fichier xib DYNAMIQUEMENT, vous devez faire ce qui précède. Voici l'explication:
self.contentView
n'est PAS le même Content View
vous voir dans Interface Builder, il est créé par le système comme l' default content view
qui est au-DESSUS de tous les autres points de vue et les éléments au sein de votre cellule personnalisé de vue, et elle occulte le reste de vues dans le point de vue de la hiérarchie. Par conséquent, vous aurez besoin de désactiver l'interaction de l'utilisateur pour les éléments d'INTERFACE utilisateur dans la cellule personnalisé vue peut recevoir de l'interaction de l'utilisateur des événements. Espérons que cette aide. Si vous avez une meilleure explication que j'aimerais l'entendre :-). De nouveau est est de mon observation et il pourrait y avoir d'autres raisons. La Discussion est la bienvenue!