iPhone: ajout de bouton pour le scrollview rend bouton inaccessibles à l'interaction
Pour une raison quelconque, le bouton initialisé dans le addBook méthode de mon viewController ne réagissent pas à la touche. Le sélecteur j'ai assigné à jamais déclenche, ni la UIControlStateHighlighted image apparaissent lorsque vous appuyez sur l'image.
Est là quelque chose de l'interception de touche avant d'arriver à la UIButton, ou est son interactivité en quelque sorte désactivé par ce que je fais?
- (void)viewDidLoad {
...
_scrollView.contentSize = CGSizeMake(currentPageSize.width, currentPageSize.height);
_scrollView.showsHorizontalScrollIndicator = NO;
_scrollView.showsVerticalScrollIndicator = NO;
_scrollView.scrollsToTop = NO;
_scrollView.pagingEnabled = YES;
...
}
- (void)addBook {
//Make a view to anchor the UIButton
CGRect frame = CGRectMake(0, 0, currentPageSize.width, currentPageSize.height);
UIImageView* bookView = [[UIImageView alloc] initWithFrame:frame];
//Make the button
frame = CGRectMake(100, 50, 184, 157);
UIButton* button = [[UIButton alloc] initWithFrame:frame];
UIImage* bookImage = [UIImage imageNamed:kBookImage0];
//THIS SECTION NOT WORKING!
[button setBackgroundImage:bookImage forState:UIControlStateNormal];
UIImage* bookHighlight = [UIImage imageNamed:kBookImage1];
[button setBackgroundImage:bookHighlight forState:UIControlStateHighlighted];
[button addTarget:self action:@selector(removeBook) forControlEvents:UIControlEventTouchUpInside];
[bookView addSubview:button];
[button release];
[bookView autorelease];
//Add the new view/button combo to the scrollview.
//THIS WORKS VISUALLY, BUT THE BUTTON IS UNRESPONSIVE :(
[_scrollView addSubview:bookView];
}
- (void)removeBook {
NSLog(@"in removeBook");
}
Le point de vue de la hiérarchie ressemble à ceci dans Interface Builder:
UIWindow
UINavigationController
RootViewController
UIView
UIScrollView
UIPageControl
et sans doute comme cela une fois la addBook méthode fonctionne:
UIWindow
UINavigationController
RootViewController
UIView
UIScrollView
UIView
UIButton
UIPageControl
OriginalL'auteur clozach | 2010-03-01
Vous devez vous connecter pour publier un commentaire.
La
UIScrollView
peut-être attraper tous les événements tactiles.Peut-être essayer une combinaison des éléments suivants:
et
userInteractionEnabled était PAS pour la vue dont j'ai été l'ajout de UIButton comme une sous-vue. Qui en était la cause, pas les 2 autres paramètres.
OriginalL'auteur MrMage
essayez de supprimer le [bookView autorelease]; et de faire comme ceci:
_scrollView.canCancelContentTouches = YES;
devrait faire l'affairedelaysContentTouches - est une valeur Booléenne qui détermine si le défilement de l'affichage des retards de la manipulation de toucher des gestes. Si la valeur de cette propriété est OUI, le défilement de l'affichage des retards de la manipulation du touch-down geste jusqu'à ce qu'il puisse déterminer si le défilement est l'intention. Si la valeur est négative , le défilement de l'affichage des appels touchesShouldBegin:withEvent:inContentView:. La valeur par défaut est OUI.
canCancelContentTouches - est une valeur Booléenne qui détermine si touche à l'affichage du contenu toujours suivi. Si la valeur de cette propriété est OUI et une vue dans le contenu a commencé le suivi d'un doigt en contact avec elle, et si l'utilisateur fait glisser le doigt suffisant pour initier une de défilement, la vue reçoit un touchesCancelled:withEvent: message et le défilement de l'affichage des poignées de le toucher comme un livre. Si la valeur de cette propriété est NON, le défilement de la vue ne se défile pas indépendamment du mouvement du doigt une fois le contenu de la vue commence de suivi.
OriginalL'auteur Sorin Antohi