Удалить подчеркивание на UIButton в iOS 7

любой знает, как убрать UIButton подчеркнуть, что появляется из-за доступности?

(Я знаю, что это потому, что пользователь включил "формы кнопок")

enter image description here

enter image description here

Как я могу удалить это программно или установив какое-либо свойство в Xcode?

9 ответов


Проверьте ниже code :

NSMutableAttributedString *attrStr = [[yourBtnHere attributedTitleForState:UIControlStateNormal] mutableCopy];//or whatever the state you want
[attrStr enumerateAttributesInRange:NSMakeRange(0, [attrStr length])
                            options:NSAttributedStringEnumerationLongestEffectiveRangeNotRequired
                         usingBlock:^(NSDictionary *attributes, NSRange range, BOOL *stop)
{
    NSMutableDictionary *mutableAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];
    [mutableAttributes removeObjectForKey:NSUnderlineStyleAttributeName];
    [attrStr setAttributes:mutableAttributes range:range];
}];

• с инспектором / IB: Выберите UIButton.
Показать Attributes Inspector.
The Textнастройки должны быть в Attributed. Выберите текст, нажмите на элемент fond удалить подчеркивание, установив его в none.
enter image description here


позвольте мне разобраться. Apple добавила функцию специальных возможностей, которая позволяет пользователям отмечать кнопки подчеркиванием, если они хотят.

вы хотите способ победить эту функцию, специально разработанную, чтобы помочь людям с ограниченными возможностями использовать свои устройства, когда функция-это то, что пользователь должен попросить.

Почему?

Это, скорее всего, невозможно с помощью стандартных кнопок. Если вы нашли способ сделать это, Apple, скорее всего, отклонит ваше приложение, потому что он побеждает системную функцию, предназначенную для помощи инвалидам.

Итак, ответ: Не делайте этого.


установите фоновое изображение на кнопку.

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

вы должны перейти в Настройки > Общие > Доступность и включить/выключить формы кнопки, а затем вернуться к приложению в вопросе. Вы должны видеть только подчеркивания и фигуры, когда этот элемент управления включен, и это должно указать, какие кнопки, которые выглядят как текст, на самом деле доступны для тех, кто нуждается в доступности.


"формы кнопок" - это новая опция доступности в iOS 7.1. Если пользователь хочет, чтобы эта опция активирована, вы ничего не можете сделать. Это выбор пользователя.


Если кнопка подчеркнута из-за опции формы кнопки доступности, Вы можете установить заголовок кнопки с помощью изображения, но не по тексту. Просто создайте изображение, где будет нарисован текст, и установите его на кнопку. В этом случае iOS не может распознать текст и не будет вставлять подчеркивание.
Вы можете рассматривать его как hack, но не как четкое решение.


вы не можете отключить эту функцию доступности.

сделать пользовательский UILabel или UIView с UITapGestureRecognizer если вы действительно хотите избавиться от него.


сначала сделать attribute string от кнопки, которая была установлена.

NSMutableAttributedString *attrStr = [[yourBtnHere  attributedTitleForState:UIControlStateNormal] mutableCopy];

удалить атрибут с помощью removeAttribute такой :

[attrStr removeAttribute:NSUnderlineStyleAttributeName range:NSMakeRange(0,[attrStr length])];
[attrStr addAttribute: NSUnderlineStyleAttributeName value: [NSNumber numberWithInt:0] range: [attrStr length]];

сброс атрибута с помощью addAttribute такой:

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

теперь установите строку атрибута в вашей кнопке

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

чтобы удалить ненужный слой синего цвета из UIButton симулятор

перейдите в Настройки > Общие > Доступность и выключите формы кнопок, а затем повторно запустите приложение, которое удалит нежелательный синий слой.