我正在开发聊天应用。 我想展示一下,如果我的朋友正在输入内容,那么聊天窗口将显示在我的最后... 现在输入...
我对代码有点了解(判断但不确定),但是在哪里调用api或者某种聊天服务器的属性呢?
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (range.length > 0)
{
// Friend is deleting
}
else
{
// Friend is typing
}
}
答案 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>
希望这有帮助。