Удалить фокус с UIButton в tvOS - PullRequest
       26

Удалить фокус с UIButton в tvOS

0 голосов
/ 21 февраля 2019

Итак, я пишу свое первое приложение для tvOS (Objective C) и получаю удовольствие от "Focus Engine".Мое приложение представляет собой двухстраничное приложение с контроллером панели вкладок, на главной странице у меня есть несколько кнопок UIB.При запуске приложения, если я скрываю панель вкладок, кнопки выглядят так, как будто я хочу, чтобы они были сняты со всех, когда я провожу пальцем одну из кнопок UIB, очевидно, получаю фокус, и я могу перемещаться между различными кнопками и после указанного количествавремени бездействия, я хочу, чтобы он возвращался к тому, что все они не сфокусированы.

Я запускаю (и сбрасываю) NSTimer, когда каждая кнопка UIB получает фокус, и я намерен удалить фокус UIButton через, скажем, 10 секунд (естьхорошая причина для этого, и это имеет смысл в моем приложении / пользовательском интерфейсе).

Я пытался выдать «UIButton resignFirstResponder». Я также пытался переместить фокус обратно на скрытую панель TabBar, я даже пытался"favouriteFocusEnvironments", но я не могу выделить подсветку кнопки.Я также попытался покататься на велосипеде, хотя кнопки устанавливали их все в «userInteractionEnabled = NO», а затем снова, но кнопка сохраняет фокус.У меня есть строки журнала, показывающие запуск таймера, и он запускает мой метод не-фокуса, когда он истекает, но независимо от того, что я вставил туда, я не могу заставить фокус исчезнуть.

Любые идеи о том, как убрать фокус с кнопки UIButton, я думаю, что часть проблемы в том, что я не хочу переносить ее куда-то еще.Я хочу удалить весь фокус кнопки, что, как мне кажется, является необычной вещью.

Заранее спасибо.

Plasma

1 Ответ

0 голосов
/ 21 февраля 2019

Я нашел способ сделать это, он немного примитивен, но он работает и достигает желаемого эффекта.

Когда истекает таймер простоя, я создаю UIButton (Custom Type) с 0,0, равным 1pxвысокая и ширина экрана.Затем я говорю представлению о необходимости обновления фокуса и обновления фокуса.Это берет фокус с любой из основных кнопок и до моей кнопки 1px high в верхней части экрана.

[focusButton removeFromSuperview];
CGRect frame = CGRectMake(0,0,(self.view.frame.size.width),1);
focusButton = [UIButton buttonWithType:UIButtonTypeCustom];
focusButton.frame = frame;
focusButton.tag = 99;
[self.view addSubview:focusButton];
[self.view setNeedsFocusUpdate];
[self.view updateFocusIfNeeded];

Затем я использую didUpdateFocusInContext, чтобы узнать, когда моей кнопке 1px был сделан фокус, иустановите кнопку на отключено.

if(context.nextFocusedView.tag == 99){
        NSLog(@"Focus Button Has Focus");
        focusButton.enabled = NO;
}

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

Plasma

...