Supprimer le soulignement sur UIButton dans iOS 7

Quelqu'un sait comment supprimer le soulignement UIButton qui apparaît en raison de l'accessibilité?

(Je sais que c'est parce que l'user a activé "Formes de buttons")

entrez la description de l'image ici

entrez la description de l'image ici

Comment puis-je supprimer cela par programme, ou en définissant une propriété dans Xcode?

Vérifiez le code ci-dessous:

 NSMutableAtsortingbutedSsortingng *attrStr = [[yourBtnHere atsortingbutedTitleForState:UIControlStateNormal] mutableCopy];//or whatever the state you want [attrStr enumerateAtsortingbutesInRange:NSMakeRange(0, [attrStr length]) options:NSAtsortingbutedSsortingngEnumerationLongestEffectiveRangeNotRequired usingBlock:^(NSDictionary *atsortingbutes, NSRange range, BOOL *stop) { NSMutableDictionary *mutableAtsortingbutes = [NSMutableDictionary dictionaryWithDictionary:atsortingbutes]; [mutableAtsortingbutes removeObjectForKey:NSUnderlineStyleAtsortingbuteName]; [attrStr setAtsortingbutes:mutableAtsortingbutes range:range]; }]; 

• Avec l'inspecteur / IB: Sélectionnez votre UIButton .
Afficher l' Atsortingbutes Inspector .
Les parameters de Text doivent être dans Atsortingbuted . Sélectionnez le text, click l'élément préféré, supprimez le paramètre Souligné à none .
entrez la description de l'image ici

Dit moi si j'ai bien compris. Apple a ajouté une fonctionnalité d'accessibilité qui permet aux users de marquer les buttons avec des soulignements s'ils le souhaitent.

Vous voulez un moyen de vaincre cette fonctionnalité, spécifiquement conçue pour aider les personnes handicapées à utiliser leurs appareils, lorsque la fonctionnalité est quelque chose que l'user doit requestr.

Pourquoi?

Il est très probablement impossible d'utiliser des buttons standard. Si vous aviez trouvé un moyen de le faire, Apple rejetterait probablement votre application, car elle détruit une fonction système destinée à aider les personnes handicapées.

Donc la réponse est: Ne fais pas ça.

Vous devriez aller dans Paramètres> Général> Accessibilité et activer / désactiver les forms de button, puis revisiter l'application en question. Vous ne devriez voir les traits de soulignement et les forms que lorsque ce contrôle est activé, et ceci pour indiquer quels buttons qui ressemblent à du text peuvent être tappés pour ceux qui ont des besoins d'accessibilité.

Définir l'image d'arrière-plan sur le button.

 [yourBtnHere setBackgroundImage:[[UIImage alloc] init] forState:UIControlStateNormal]; 

Les "forms de buttons" constituent une nouvelle option d'accessibilité dans iOS 7.1. Si l'user souhaite activer cette option, vous ne pouvez rien faire. C'est le choix de l'user.

Si le button est souligné en raison de l'option de forme du button d'accessibilité, vous pouvez définir le titre du button en utilisant l'image mais pas par le text. Créez simplement l'image où le text sera dessiné et placez-le sur le button. Dans ce cas, iOS ne peut pas reconnaître le text et n'insère pas de soulignement.
Vous pourriez le considérer comme un hack mais pas une solution aussi claire.

Vous ne pouvez pas désactiver cette fonctionnalité d'accessibilité.

Créez un UILabel ou UIView personnalisé avec UITapGestureRecognizer si vous voulez vraiment vous en débarrasser.

Obtenir d'abord la atsortingbute ssortingng du button qui a été défini.

 NSMutableAtsortingbutedSsortingng *attrStr = [[yourBtnHere atsortingbutedTitleForState:UIControlStateNormal] mutableCopy]; 

Supprimer l'atsortingbut en utilisant removeAtsortingbute comme ceci:

 [attrStr removeAtsortingbute:NSUnderlineStyleAtsortingbuteName range:NSMakeRange(0,[attrStr length])]; [attrStr addAtsortingbute: NSUnderlineStyleAtsortingbuteName value: [NSNumber numberWithInt:0] range: [attrStr length]]; 

Réinitialisez l'atsortingbut en utilisant addAtsortingbute comme ceci:

 UIColor *textBtncolor = [UIColor blackColor]; [attrStr addAtsortingbute:NSForegroundColorAtsortingbuteName value:textBtncolor range:NSMakeRange(0, attrStr.length)]; 

Maintenant, définissez la string d'atsortingbut dans votre button

 [yourBtnHere setAtsortingbutedTitle:[attrStr copy] forState:UIControlStateNormal]; 

Pour supprimer la couche de couleur bleue indésirable de UIButton dans le simulateur

allez dans Paramètres> Général> Accessibilité et désactivez les forms de button, puis relancez l'application pour supprimer le calque indésirable.