Fix keyboard hiding. Focus on input when response view is shown.

This commit is contained in:
virvar 2016-06-06 17:33:04 +03:00
parent a7e694cb46
commit df8c7f2fe7
3 changed files with 42 additions and 21 deletions

View File

@ -78,6 +78,23 @@
:handler (:handler command)}] :handler (:handler command)}]
(commands/stage-command db command-info)))) (commands/stage-command db command-info))))
(register-handler :set-message-input []
(fn [db [_ input]]
(assoc db :message-input input)))
(register-handler :prepare-message-input
(u/side-effect!
(fn [db _]
(when-let [message-input (:message-input db)]
(.clear message-input)
(.focus message-input)))))
(register-handler :blur-message-input
(u/side-effect!
(fn [db _]
(when-let [message-input (:message-input db)]
(.blur message-input)))))
(register-handler :set-response-chat-command (register-handler :set-response-chat-command
(after #(dispatch [:animate-show-response])) (after #(dispatch [:animate-show-response]))
(fn [db [_ to-msg-id command-key]] (fn [db [_ to-msg-id command-key]]

View File

@ -56,12 +56,13 @@
(assoc-in db [:animations :to-response-height] (get-response-height db))) (assoc-in db [:animations :to-response-height] (get-response-height db)))
(register-handler :finish-show-response (register-handler :finish-show-response
(after #(dispatch [:prepare-message-input]))
(fn [db _] (fn [db _]
(assoc-in db [:animations :commands-input-is-switching?] false))) (assoc-in db [:animations :commands-input-is-switching?] false)))
(register-handler :animate-show-response (register-handler :animate-show-response
(after #(dispatch [:animate-response-resize]))
(fn [db _] (fn [db _]
(dispatch [:animate-response-resize])
(-> db (-> db
(assoc-in [:animations :commands-input-is-switching?] true) (assoc-in [:animations :commands-input-is-switching?] true)
(assoc-in [:animations :response-height-current] zero-height) (assoc-in [:animations :response-height-current] zero-height)

View File

@ -146,19 +146,22 @@
message-input? st/message-input message-input? st/message-input
response? st-response/command-input response? st-response/command-input
command st-command/command-input) command st-command/command-input)
:ref (fn [input]
(dispatch [:set-message-input input]))
:autoFocus false :autoFocus false
:blurOnSubmit dismiss-keyboard :blurOnSubmit dismiss-keyboard
:onChangeText (fn [text] :onChangeText (fn [text]
(when-not animation?
((if message-input? ((if message-input?
set-input-message set-input-message
command/set-input-message) command/set-input-message)
text)) text)))
:editable (not animation?) :onSubmitEditing #(when-not animation?
:onSubmitEditing #(if message-input? (if message-input?
(try-send staged-commands (try-send staged-commands
input-message input-message
dismiss-keyboard) dismiss-keyboard)
(command/try-send input-command validator))} (command/try-send input-command validator)))}
(when command (when command
{:accessibility-label :command-input}) {:accessibility-label :command-input})
input-options) input-options)