zoukankan      html  css  js  c++  java
  • 4.XMPP用户界面登录

    一、 将用户名和密码输出框拖线到文件中。不想别人访问就可以拖到.M文件中。

      1.输入框需要用户使用回车键  将输入框的代理连线到控制器     

      2.再到文件中继承<UITextFieldDelegate>

     在 -(void)textFieldShouldReturn:(UITextField *)textField{

      if (textField ==_userNameText){

      [_passwordText becomeFirstResponder];

      }else{

      //登录

      [self userLogin];

      }

      return YES;

    }

      3.将登录连接方法 -(IBAction)userLogin;

    在方法中{

      1.检查用户输入是否完整

      //截断字符串前后的空格(密码除外),从而可以最大程度降低用户输入错误

      NSString *userName = [_userNametext.text trimString]; 

        NSString *password = _passwordText.text;   //有些用户会使用空格做密码 

      if ([userName isEmptyString] || [password isEmptyString]){  //判断用户信息是否输入完整

      UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:@"登录信息不完整" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil,nil];

      [alter show];

      

      return;

      }

      2.让AppDelegate开始连接

        添加AppDelegate.h头文件

        添加 -(AppDelegate *)appDelegate{ //并初始化这个方法

        return [[UIApplication sharedApplication] delegate];

        }

      2.1将用户登录信息写入系统偏好

      导入.h文件 

      [userName saveToNSDefaultsWithKey:kXMPPUserNameKey];

      [password saveToNSDefaultsWithKey:kXMPPPasswordKey];

      [hostName saveToNSDefaultsWithKey:kXMPPHostNameKey];

      在AppDelegate.h文件中 定义一个连接到服务器的方法 判断是否正确失败块代码 及用户键值key

      #define kXMPPUserNameKey @"xmppUserName"

      #define kXMPPPasswordKey  @"xmppPassword"

      #define kXMPPHostNameKey  @"xmppHostName"

      typedef void(^CompletionBlock)();

      

      -(void)connectWithUserName:(CompletionBlock *)completion password:(CompletionBlock *)faild; //completion 正确块代码 faild错误块代码

      在AppDelegate.m文件中。修改指定用户名、主机的方法 开始发送身份请求

      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

      NSString *hostName = [defaults stringForKey:kXMPPHostNameKey];

      NSString *userName = [NSString stringWithFormat:@"%@@%@",[defaults stringForKey:kXMPPPasswordKey],[defaults stringForKey:kXMPPHostNameKey]];

      //在开始发送身份请求修改密码

      NSString *password = [[NSUserDefaults standardUserDefaults] stringForKey:xmppPassword];  

      //在写成功和失败的块代码 interface{

      CompletionBlock _completionBlock;  //成功

      CompletionBlock _faildBlock;      //失败

      }

      //连接到服务器  实现 -(void)connectWithUserName:(CompletionBlock *)completion password:(CompletionBlock *)faild{

      1.记录块代码

      _completionBlock =completion;

      _faildBlock =faild;

      2.如果已经存在连接,先断开连接,然后再次连接

      if([_xmppStream isConnected]{

      [_xmppStream disconnect];

      }

      3.连接到服务器

      [self connect];

      }

      //在身证验证通过方法中 判断_completionBlock是否为空

      if (_completionBlock !=nil){ _completionBlock();}

      //在身份验证失败方法中

      if (_faildBlock !=nil){ _faildBlock();}

        注释   上面的激活[self disConnect]; 和断开[self connect];

      //  让AppDelegate开始连接

      [[self appDelegate] connectWithCompletion:^{//登录成功}failed:^{//失败}]; 

      3.连接成功或失败后提示用户

    }  

      3.1.1 去除字符串中的空白字符。可以建个分类 在我的代码>Category文件夹有常用方法 Tool是建单例   添加NSString+Helper.h文件有下面这个方法

      -(NSString *)trimString:(NSString *)str{

      return [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

      }

      

  • 相关阅读:
    declaration may not appear after executable statement in block
    linux 管道通信
    用c语言创建双向环形链表
    bash: ./LM35_make_fs: Permission denied 解决办法
    sunzl is not in the sudoers file.This incident will be reported
    基于嵌入式linux路由转发功能的实现
    关于eth0 eth0:1 和eth0.1关系介绍
    软重启
    Android中Serializable和Parcelable序列化对象详解
    公共技术点(Android 动画基础)
  • 原文地址:https://www.cnblogs.com/qq907374866/p/4252520.html
Copyright © 2011-2022 走看看