def briar_keyboard_set_text (text, view_id, &do_for_each_char)
if gestalt.is_ios7?
query_str = "view marked:'#{view_id}'"
accum = ''
text.chars.to_a.each { |char|
accum << char
query(query_str, {setText:accum})
do_for_each_char.call(view_id, accum)
@text_entered_by_keyboard = accum
sleep(0.05)
}
else
pending 'this is hack for iOS 7 (playback not available yet) - use briar_keyboard_enter_text'
end
end
example:
# i have a text field with a delegate that itself has a delegate that responds when the text has changed
# the textChangedDelegate handleTextFieldDidChangeWithSearchString method reloads a table view
briar_keyboard_set_text(behavior, 'add/search') { |view_id, text|
query("view marked:'#{view_id}'", :delegate, :textChangedDelegate, [{handleTextFieldDidChangeWithSearchString:text}])
}
this pattern is not very common, but i thought i would share it.