У меня проблема с перемещением фокуса с помощью физической клавиатуры или 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
С наилучшими пожеланиями