UIImageView не фокусируется на tvOS

У меня есть следующее UIViewController, которое я делаю в раскадровке.

Рассказы

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

 override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator)

но событие фокуса не обновляется. Раньше я добавлял UIImageView непосредственно к self.view в раскадровке, но я где-то читал, что сам UIImageView не фокусируется, поэтому я поместил свой UIImageView в другой UIView, но он по-прежнему не получает никакого фокуса. Я выровнял верхние края UIView, которые содержат UIImageView и UITextView.

Любая помощь будет высоко оценена

Кстати, я также пытался использовать UIFocusGuide, но это тоже не сработало. Я думаю, что мне не нужно использовать UIFocusGuide, потому что это базовая вещь для фокусировки вправо.


person Madu    schedule 07.11.2015    source источник
comment
@Madu, у меня такая же проблема. Можете ли вы сказать мне, как это решить. Я также попробовал следующий ответ. но я не добиваюсь успеха.   -  person Sankalap Yaduraj Singh    schedule 04.12.2015
comment
Наконец, что я сделал, так это добавил представление коллекции, а в collectionviewcell добавил изображение. Это сделало работу для меня, по крайней мере   -  person Madu    schedule 04.12.2015


Ответы (2)


UIImageView по умолчанию не фокусируется и не получит эффекта фокуса, вы можете сделать две вещи, чтобы сделать его фокусируемым.

  1. Подкласс UIImageView и в подклассе переопределяют canBecameFocused и возвращают YES, а затем переопределяют didUpdateFoucsInContext и обновляют внешний вид для состояния фокуса, например, если фокус увеличивается или меняет цвет и т. д.
  2. Второй вариант - добавить его в представление, которое можно сфокусировать, а затем установить imageView.adjustImageWhenAncestorFocused = YES, а также установить clipToBounds = NO на superview.

Итак, в вашем случае, когда вы добавляете imageView в представление, это представление должно возвращать YES/True из canBecameFocused.

person Adnan Aftab    schedule 11.11.2015
comment
Во втором случае опечатка: AdjustImageWhenAncestorFocused должен быть AdjustsImageWhenAncestorFocused. - person JMI; 18.05.2016
comment
Здравствуйте, Аднан. Я попытался создать подкласс и переопределить методы canBecomeFocused и didUpdateFocusInContext, но по-прежнему не обновляются обновления фокуса. Какие-либо предложения? - person shivamkaushik; 06.09.2016
comment
Какова ваша иерархия представлений? И если вы добавляете представление в какое-то другое представление, убедитесь, что вы переопределяете метод canBecomeFocused. - person Adnan Aftab; 06.09.2016

@C_X прав. Самое главное, что если UIImageView добавляется к self.view, то не забудьте создать подкласс self.view и переопределить метод canBecameFofused.

person yuhua    schedule 19.11.2015