怎么做?现在输入...在聊天应用程序中

How to do? Now Typing... in chat app

我正在开发聊天应用程序。 我想展示如果我的朋友正在输入内容,那么最终聊天 window 将显示......现在输入...

我知道一点代码(判断但不确定),但是在哪里调用 api 或者它是由某种聊天服务器的 属性 完成的?

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (range.length > 0)
    {
         // Friend is deleting
    }
    else
    {
        // Friend is typing
    }
}

编辑2: 我的回答是基于 XMPP,因为问题说它是一个聊天应用程序。聊天应用程序通常使用 XMPP 协议。根据您的要求,您可以使用以下解决方案:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
   if([string isEqualToString:@""]) {
       // Deleting. This will call multiple time so it's on you if you want to implement it. It may be optimize at some level.
       // You can use performSelector withDelay & cancelSelectors etc.
   }
   else {
       //Typing
       if (textField.text.length == 0) {
           // TextField is empty right now and the user has began typing. So call the service with typing status. 
           //This condition is useful to prevent web service call every time user type.
       }
   }
}

编辑1:

勾选XEP-0022。这似乎可以满足您的需求。

当 A 打字时(从用户 A 的客户端发送消息):

 <message
    from='a@server.com'
    to='b@server.com'>
    <x xmlns='jabber:x:event'>
      <composing/>
      <id>message22</id>
    </x>
 </message>

B 的客户将收到以下信息:

 <message
      from='a@server.com'
      to='b@server.com'>
      <x xmlns='jabber:x:event'>
          <composing/>
          <id>message22</id>
      </x>
</message>

现在您可以处理响应并相应地显示内容了。

原文:

有一个 XEP-0085 可用于聊天状态。当您在文本字段中检测到修改时,您可以发送以下节,如 link:

中所述
<message 
    from='bernardo@shakespeare.lit/pda'
    to='francisco@shakespeare.lit/elsinore'
    type='chat'>
   <composing xmlns='http://jabber.org/protocol/chatstates'/>
</message>

希望对您有所帮助。