怎么做?现在打字...在聊天应用程序中

时间:2015-03-31 09:47:42

标签: objective-c ios8 chat

我正在开发聊天应用。 enter image description here 我想展示一下,如果我的朋友正在输入内容,那么聊天窗口将显示在我的最后... 现在输入...

我对代码有点了解(判断但不确定),但是在哪里调用api或者某种聊天服务器的属性呢?

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

1 个答案:

答案 0 :(得分:2)

<强> EDIT2: 我的回答是基于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.
       }
   }
}

<强> EDIT1:

检查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&#39>的客户将收到以下信息:

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

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

<强>原始

聊天状态有XEP-0085可用。当您在文本字段中检测到修改时,您可以发送链接中提到的以下节:

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

希望这有帮助。