UIWebview检测表单文本更改

时间:2014-04-16 21:12:43

标签: ios xcode uiwebview uikeyboard

我想知道是否有任何好方法可以将- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string基本上应用于网页浏览中的表单。

结果将对网络表单中的每个输入/删除的字母做出反应。

现在我使用定时器会每隔.1秒触发一次以检查但是它不是一个非常好的解决方案并导致一些不良行为似乎锁定了调用任何其他Javascript的能力evalutations ..

1 个答案:

答案 0 :(得分:0)

解决这个问题的一种方法是注射"注射"一些javascript代码进入页面,只要你感兴趣的事件发生就会尝试导航 您可以在UIWebView上捕获并取消导航,并使用导航事件作为事件处理程序(可能在URL本身中传递数据)。

一系列事件将是这样的:

  1. 事件(例如字段中值的更改)在JS中触发。
  2. 注入的代码导航到某个(虚假的)网址。
  3. 您应用的Obj-C代码将(收听并)收到导航事件。您的代码将检查该URL并发现它是该事件所期望的那个。您可以在网址上传递其他事件数据。
  4. 应用代码将取消导航,因此页面上实际上没有任何变化
  5. 您的应用会以任何您想要的方式做出反应。
  6. 您没有提及您是否可以控制网页内容,因此我不会详细介绍如何注入该javascript代码。如果您想要描述的话,请告诉我。

    我成功地扩充/更改了许多DOM事件,而没有实际拥有我的UIWebView导航到的网页,实际上在通过我的应用程序浏览这些页面时,通过普通的移动浏览器给用户提供了不同的体验。 / p> 希望有所帮助。 附:使用PhoneGap可能有一种更简单的方法。我很想知道这是否可以缩短事情。