2015-04-02 8 views
6

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

В принципе, когда я нажимаю return в TextInput, я хочу, чтобы текст очищался и сохранялся.

Любые мысли?

ответ

15

Я подал PR с blurOnSubmit.

Установите его на false, а TextInput никогда не размывается, onSubmitEditing все еще срабатывает.

Надеюсь, он будет слит. :)

https://github.com/facebook/react-native/pull/2149

+2

Yay! Он слился! –

6

я вышел с следующим (рабочим) раствором:

var NameInput = React.createClass({ 
    getInitialState() { 
    return { 
     textValue: '' 
    } 
    }, 

    clearAndRetainFocus: function(evt, elem) { 
    this.setState({textValue: elem.text}); 
    setTimeout(function() { 
     this.setState({textValue: this.getInitialState().textValue}); 
     this.refs.Name.focus(); 
    }.bind(this), 0); 
    }, 

    render() { 
    return(
     <TextInput 
     ref='Name' 
     value={this.state.textValue} 
     onEndEditing={this.clearAndRetainFocus} /> 
    ) 
    } 
}); 

Таким образом, в основном, когда мы закончим редактирование, мы установим textValue состояния на стоимость TextInput и сразу после этого (в setTimeout), мы возвращаем его по умолчанию (пусто) и сохраняем фокус на элементе.

+0

Это работает только в полтора раза. Увеличение тайм-аута помогает, но должно быть решение, которое всегда будет работать. – brysgo

+0

Он более надежный с программной клавиатурой, но клавиатура закрывается и открывается. – brysgo

+1

Как сделать это на 'onSubmitEditing'? –

 Смежные вопросы

  • Нет связанных вопросов^_^