calabash:触摸UITextView但没有触发委托shouldChangeCharactersInRange

时间:2014-02-27 06:13:12

标签: ios7 automation calabash

在iOS 7中,calabash在文本视图上尝试了touch()查询,但它没有触发委托shouldChangeCharactersInRange。所以我无法使用keyboard_enter_text()

键入文本

我可以使用set_text ()方法将文本设置为文本视图, 像这样

query("textView index:#{index}", setText:"#{text}")

但它没有触发委托方法。 有没有人有这方面的解决方案请分享。

2 个答案:

答案 0 :(得分:0)

我用它来解决这个问题。我不得不打电话给#34;触摸"事件两次才能奏效。这是一个突然出现的解决方案。但首先使用一次检查

def set_text_to_textview_num(text,index)
  index = index.to_i
  if (index>=0)
    touch(isValidElement("view:'UITextView' index:#{index}"))
    touch(isValidElement("view:'UITextView' index:#{index}"))
    sleep(0.4)
    wait_for_keyboard
    sleep(0.2)
    keyboard_enter_text("#{text}")
    done
    sleep(0.3)
  end
end

答案 1 :(得分:0)

我在您的评论中发布了您尝试链接的主题。

这是您在评论中选择的正确网址(缩写):http://goo.gl/3smo72

简答:使用keyboard_enter_text

set_text自0.9.145以来已被弃用(葫芦现在为0.9.167)。

我在帖子中给出的解决方案是对苹果公司默默放弃对播放/录制的支持的破解,这打破了葫芦在iOS 7中执行触摸事件的能力。

您发布的代码可以替换为

wait_for_elements_exist(["textView index:#{index.to_i}"])
touch("textView index:#{index}")
wait_for_keyboard
keyboard_enter_text(text)
tap_keyboard_action_key
# sleep or wait for something else like the keyboard to disappear