Навигация с помощью физической клавиатуры или пульта телевизора позволяет сфокусироваться на экране (React Navigtion) - PullRequest
0 голосов
/ 11 октября 2018

У меня проблема с перемещением фокуса с помощью физической клавиатуры или D-pad (пульт ДУ).Я тестирую изображение с Android-эмулятора TV Box (android 6 с D-Pad) и реагирую на навигацию

Текущее поведение

Я перемещаю фокус с помощью стрелок на клавиатуре (или эмулятора).D-Pad) между компонентами TouchableHighlight.Когда я перехожу ко второму экрану, его компоненты не получают фокус, или фокус выходит из них при его перемещении.Я должен нажать в моем примере правую клавишу со стрелкой 2-3 раза, чтобы сфокусироваться на каком-либо компоненте во втором экране.Также фокус выходит из второго экрана, когда я двигаю его стрелками.Вы можете нажать клавишу ввода на клавиатуре и посмотреть в журнале, какой компонент получил фокус.Просто нажмите стрелки на клавиатуре, введите и просмотрите консоль входа в систему. Вот код:

/* App.js */
import React, {Component} from 'react';
import {Platform, Text, View, TouchableHighlight} from 'react-native';
import {createStackNavigator} from 'react-navigation';

class HomeScreen extends Component<Props> {
  static navigationOptions = {  title: 'Home Screen',  header: null  };
  render() {
    return (
      <View style={{flexDirection: 'row'}}>
        <View>
          <TouchableHighlight onPress={() => console.log('button 1')}>
            <Text>Button 1</Text>
          </TouchableHighlight>
          <TouchableHighlight onPress={() => console.log('button 2')}>
            <Text>Button 2</Text>
          </TouchableHighlight>
          <TouchableHighlight
            onPress={() => this.props.navigation.navigate('Second')}>
            <Text>Open SecondScreen</Text>
          </TouchableHighlight>
        </View>
        <View>
          <Text>Some Text</Text>
        </View>
      </View>
    );
  }
} /* end class */

class SecondScreen extends Component<Props> {
  static navigationOptions = { title: 'Home Screen',  header: null };
  render() {
    return (
      <View style={{flex: 1, alignItems: 'center'}}>
        <TouchableHighlight
          onPress={() => console.log('button 3')}>
          <Text>Button 3</Text>
        </TouchableHighlight>
        <TouchableHighlight
          onPress={() => console.log('button 4')}>
          <Text>Button 4</Text>
        </TouchableHighlight>
        <TouchableHighlight
          onPress={() => this.props.navigation.goBack() }>
          <Text>Close Screen</Text>
        </TouchableHighlight>
      </View>
    );
  }
} /* end class */

const MainStack = createStackNavigator({
  Home: {screen: HomeScreen},
  Second: {screen: SecondScreen},
});

export default class App extends Component<Props> {
  render() {
    return <MainStack />;
  }
}

Ожидаемое поведение

Когда пользователь открывает новый экран с «навигацией», открытый экран должен получить фокуси "замки" внутри фокуса его компонентов.Клавиатура / навигационная панель / пульт ДУ телевизора должны перемещать фокус между компонентами внутри нового экрана.(Как будто это модальное окно)В данный момент фокус перемещается со второго экрана на кнопки родительского экрана и обратно.Второй экран ведет себя как «часть родительского экрана»

Я не могу сделать пример закуски, потому что эмулятор закуски не поддерживает взаимодействие с клавиатурой или клавишами навигации, но в эмуляторе Android Studio проблемалегко воспроизводимо

Я использую: Reaction-Navigation 2.12.1 Reaction-native 0.56.0

С наилучшими пожеланиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...