6
votes

Zone du robinet Uibarbuttonitem

i Création d'un bouton de la barre de gauche avec la méthode suivante: xxx pré>

J'ai besoin d'ajouter un bouton sur la vue car lorsque j'utilise CGRectOffset pour le bouton, il ne fonctionne pas. Donc, avec ce cas, mon bouton sur un OD L'UIViewController affiche P>

Entrez la description de l'image ici

C'est ce que je veux. Mais Uibarbutton a commencé à cliquer sur Uibarbutton (zone du rectangle). Mais quand j'ajoute que je n'aijoute que dans uibarbuttonitem, il fonctionne même si j'ai cliqué sur la zone de la zone d'Uinavigation que vous pouvez voir à l'écran. P>

i Ajouter un bouton comme ceci: P>

- (void)leftButtonOnNavigationItem:(NSString *)imageName type:(NSInteger)type
{
    UIImage *backImg = [UIImage imageNamed:imageName];
    UIButton *backBtn = [[UIButton alloc] initWithFrame:CGRectMake(0.f, 0.f, backImg.size.width, backImg.size.height)];
    if (type == 0)
        [backBtn addTarget:self.navigationController action:@selector(pop) forControlEvents:UIControlEventTouchUpInside];
    else
        [backBtn addTarget:self action:@selector(leftMake) forControlEvents:UIControlEventTouchUpInside];
    backBtn.contentMode = UIViewContentModeCenter;
    [backBtn setImage:backImg forState:UIControlStateNormal];
//    UIView *backBtnView = [[UIView alloc] initWithFrame:backBtn.bounds];
//    backBtnView.bounds = CGRectOffset(backBtnView.bounds, -6, 0);
//    [backBtnView addSubview:backBtn];
    UIBarButtonItem *backBarBtn = [[UIBarButtonItem alloc] initWithCustomView:backBtn];//View];
    self.navigationItem.leftBarButtonItem = backBarBtn;
}


0 commentaires

4 Réponses :


0
votes

Le cadre d'une vue est la taille et la position de la vue dans un superview (son parent). Donc, lorsque vous allez à définir backbtnview initwithframe Essayez: xxx

et oubliez les limites de tous ensemble, je pense que cela vous mettra dans la bonne direction.


1 commentaires

pas d'aide = (même résultat - zone cliquable est uniquement rate de bouton



3
votes

Tous les commandes / éléments pouvant être interagi avec hériter d'UIView. UIView fournit une méthode appelée - (BOOL) POINTINITIDE: (CGPOINT) POINTEvent: (UIVENT *) Evénement;

Il est possible de réimplacer cette méthode dans votre propre sous-classe pour augmenter ou diminuer la validité. Appuyez sur la région de la vue (ou bouton dans votre cas). Par exemple, pour développer la région de frappe de 5 points dans toutes les directions xxx

notez les valeurs négatives lors de l'utilisation de CGRectureNet (). En effet, la fonction est conçue pour rétrécissant un cgre, donc en spécifiant une valeur négative, la fonction élargie le CGRRECT.

espère que cela aide!


2 commentaires

uibarbuttonitem n'hérite pas réellement de uiview , sa sous-classe nsObject .


@jszumski tandis que c'est vrai, il ajouté en fait un Uibutton en tant que sous-vision personnalisée de l'Uibarbuttonitem.



1
votes

Vous pouvez utiliser UiedgeIsetsSetsMake. Cela fonctionne pour moi. XXX


0 commentaires

0
votes

Je l'ai corrigé dans le cadre d'accessibilité d'occasion. Il suffit de définir un cadre d'accessibilité pour le bouton avec une hauteur et une largeur accrues et cela fonctionnera.


0 commentaires