iOS-登录,注册隐私政策,用户协议

柔情只为你懂 2023-10-18 22:31 436阅读 0赞

在写登录,注册界面时,我们会碰到两个按钮,一个是隐私政策,一个是用户协议,分别是要跳转到相应的链接或者PDF查看。之前博主的想法是在UILabel上添加两个UIButton,@”隐私政策”,@”用户协议”上各自添加一个UIButton;一个是计算@”我已阅读并同意”字符串的长度,然后以此为起点,以@”隐私政策”字符串的末尾为结尾,另一个按钮以@”用户协议”开始作为起点尾部作为结尾,最终发现这样有些麻烦,经过一番百度,发现UITextView有一个方法- (void)addAttribute:(NSAttributedStringKey)name value:(id)value range:(NSRange)range;可以帮我们完成这件事,截图如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01pbmdnZVFpbmdjaHVu_size_16_color_FFFFFF_t_70具体完成的方法,创建代码如下:

博主经过了国际化操作,粘贴处字符串代表的意思:

  1. "register_user_readagree" = "我已阅读并同意";
  2. "register_user_privacypolicy" = "隐私条款";
  3. "register_user_useragreement" = "用户协议";
  4. /// 同意
  5. UIButton *btnAgree = [UIButton buttonWithType:UIButtonTypeCustom];
  6. self.btnAgree = btnAgree;
  7. btnAgree.selected = YES;
  8. [btnAgree setBackgroundImage:[UIImage imageNamed:@"OCR_agree"] forState:UIControlStateSelected];
  9. [btnAgree setBackgroundImage:[UIImage imageNamed:@"OCR_noAgree"] forState:UIControlStateNormal];
  10. [self addSubview:btnAgree];
  11. [btnAgree mas_makeConstraints:^(MASConstraintMaker *make) {
  12. make.left.mas_equalTo(16);
  13. make.top.equalTo(btnCommit.mas_bottom).offset(20);
  14. make.width.height.mas_equalTo(40);
  15. }];
  16. [btnAgree addTarget:self
  17. action:@selector(agreeAction:)
  18. forControlEvents:UIControlEventTouchUpInside];
  19. /// 同意文本
  20. UITextView *tvAgree = [[UITextView alloc]init];
  21. self.tvAgree = tvAgree;
  22. tvAgree.userInteractionEnabled = YES;
  23. tvAgree.font = SET_FONT(12.0);
  24. tvAgree.textColor = TextLightGrayCOLOR;
  25. tvAgree.editable = NO;//必须禁止输入,否则点击将弹出输入键盘
  26. tvAgree.scrollEnabled = NO;
  27. tvAgree.delegate = self;
  28. tvAgree.textContainerInset = UIEdgeInsetsMake(0,0, 0, 0);
  29. [self addSubview:tvAgree];
  30. [tvAgree mas_makeConstraints:^(MASConstraintMaker *make) {
  31. make.right.mas_equalTo(-16);
  32. make.left.mas_equalTo(30);
  33. make.centerY.equalTo(btnAgree.mas_centerY);
  34. make.height.mas_equalTo(20);
  35. }];
  36. NSString *agreeStr = [NSString stringWithFormat:@"%@《%@》《%@》",BZLocalizedString(@"register_user_readagree", nil),BZLocalizedString(@"register_user_privacypolicy", nil),BZLocalizedString(@"register_user_useragreement", nil)];/// @"我已阅读并同意《隐私政策》《用户协议》";
  37. NSMutableAttributedString *diffString = [[NSMutableAttributedString alloc] initWithString:agreeStr];
  38. [diffString addAttribute:NSForegroundColorAttributeName value:tvAgree.textColor range:[[diffString string] rangeOfString:BZLocalizedString(@"register_user_readagree", nil)]];/// @"我已阅读并同意"
  39. [diffString addAttribute:NSLinkAttributeName
  40. value:@"privacy://"
  41. range:[[diffString string] rangeOfString:[NSString stringWithFormat:@"《%@》",BZLocalizedString(@"register_user_privacypolicy", nil)]]];/// 《隐私政策》
  42. [diffString addAttribute:NSLinkAttributeName
  43. value:@"delegate://"
  44. range:[[diffString string] rangeOfString:[NSString stringWithFormat:@"《%@》",BZLocalizedString(@"register_user_useragreement", nil)]]];/// 《用户协议》
  45. tvAgree.linkTextAttributes = @{NSForegroundColorAttributeName: MainThemeColor};
  46. tvAgree.attributedText = diffString;

UITextView的NSLinkAttributeName属性,就是点击链接跳转

实现UITextView的代理,调用如下:

  1. #pragma mark - UITextViewDelegate
  2. /// 隐私,协议
  3. - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {
  4. /// 隐私
  5. if ([[URL scheme] isEqualToString:@"privacy"]){
  6. /// 跳转隐私政策界面
  7. }
  8. /// 协议
  9. else if ([[URL scheme] isEqualToString:@"delegate"]) {
  10. /// 跳转用户协议界面
  11. }
  12. return YES;
  13. }

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange方法就是处理UITextView的URL点击链接处理方法,因此这样我们就能省了一点事,效果如下:

2019072717015128.gif

发表评论

表情:
评论列表 (有 0 条评论,436人围观)

还没有评论,来说两句吧...

相关阅读

    相关 抖音用户隐私保护政策与实践案例

    抖音是中国著名的短视频分享平台,其在用户隐私保护方面有着严格的政策,并通过各种实践案例来确保执行。 1. **隐私政策**:抖音的隐私政策明确指出,会收集和使用用户的个人信息

    相关 《骆寻》隐私政策

    隐私政策 骆寻尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,骆寻会按照本隐私权政策的规定使用和披露您的个人信息。但骆寻将以高度

    相关 iOS隐私政策

    隐私政策   本应用尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤

    相关 隐私政策

    隐私政策 本应用尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉

    相关 用户注册登录流程

    用户注册: 1.用户填写参数,移出鼠标效验手机号,登录账号,邮箱, 2.判断用户id是否是超级管理员用户,超级管理员是不允许修改的 3.随机生成盐,用户赋值盐

    相关 隐私政策

    我们收集哪类个人信息? 通常,您能在匿名的状态下访问我们的网站并获取信息。在我们请求您提供有关信息之前,我们会解释这些信息的用途我们有些站点需要注册才能加入。在通常情况下...