Ios 如何检测用户正在键入消息?

Ios 如何检测用户正在键入消息?,ios,swift,algorithm,xmpp,logic,Ios,Swift,Algorithm,Xmpp,Logic,例如,在聊天应用程序中,当用户撰写消息时,应用程序会显示键入图标,但如果用户停止撰写消息中间的,应用程序会消失撰写图标 应用程序如何检测用户在排版或打字期间停止打字? 例如: hel(显示键入图标) 停止键入(隐藏键入图标) lo(继续键入-再次显示)如果您正在使用UITextField,下面的方法可能会对您有所帮助 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range rep

例如,在聊天应用程序中,当用户撰写消息时,应用程序会显示
键入
图标,但如果用户停止撰写消息中间的,应用程序会消失
撰写
图标

应用程序如何检测用户在排版或打字期间停止打字?

例如:

hel(显示键入图标)

停止键入(隐藏键入图标)


lo(继续键入-再次显示)

如果您正在使用UITextField,下面的方法可能会对您有所帮助

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
}
如果您正在使用UITextView,请尝试下面的方法

 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
 }

首先,您需要检测用户何时开始键入。您可以
addTarget
您的
UITextField
对象。当用户停止输入时,只需在该目标中设置一个计时器即可

textField.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged)

func textFieldDidChange(textField: UITextField) {

   textTimer?.invalidate()
   textTimer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: Selector("textFieldStopChanging:"), userInfo: nil, repeats: false)
   print("Start typing")
}

func textFieldStopEditing(sender: NSTimer) {

   print("Stop typing")
}

检查键盘是否处于活动状态,并在状态发生变化时向API发送信息。如果您正在使用xmpp,则需要在键盘处于活动状态时向服务器发送排版状态,否则不需要发送。@Dharbirchoudhary请仔细阅读我的问题。我问,如果用户停止在消息组成的中间。他只是停了下来。忘了keyboard@Orkhan您可以在ShouldChangeCharactersRange中调用您的方法。