国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison Applet WeChat Développement WeChat iOS implémente une zone de saisie de mot de passe similaire à WeChat et Alipay (protocole UIKeyInput)

iOS implémente une zone de saisie de mot de passe similaire à WeChat et Alipay (protocole UIKeyInput)

Jan 10, 2017 am 09:37 AM

Actuellement, je dois implémenter la fonction d'envoi d'enveloppes rouges dans le projet, j'ai donc écrit un contr?le pour la zone de saisie du mot de passe, en utilisant principalement le protocole UIKeyInput et le framework CoreGraphics. L'effet est similaire au paiement WeChat. ?a fait du bien, je partagerai mes idées et mon processus de production. L'écrire et le partager avec tout le monde.

iOS implémente une zone de saisie de mot de passe similaire à WeChat et Alipay (protocole UIKeyInput)

Laissez votre vue personnalisée avoir la fonction de saisie (protocole UIKeyInput)

Le protocole UIKeyInput peut fournir au répondeur une simple fonction de saisie au clavier. répondeur qui nécessite un clavier le premier répondeur. Il existe trois méthodes qui doivent être implémentées dans le protocole UIKeyInput, qui sont les méthodes suivantes?:

#pragma mark - UIKeyInput
/**
 * 用于顯示的文本對(duì)象是否有任何文本
 */
- (BOOL)hasText {
  return self.textStore.length > 0;
}
 
/**
 * 插入文本
 */
- (void)insertText:(NSString *)text {
  if (self.textStore.length < self.passWordNum) {
    //判斷是否是數(shù)字
    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:MONEYNUMBERS] invertedSet];
    NSString*filtered = [[text componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
    BOOL basicTest = [text isEqualToString:filtered];
    if(basicTest) {
     if ([self.delegate respondsToSelector:@selector(passWordDidChange:)]) {
        [self.delegate passWordDidChange:self];
      }
      if (self.textStore.length == self.passWordNum) {
        if ([self.delegate respondsToSelector:@selector(passWordCompleteInput:)]) {
          [self.delegate passWordCompleteInput:self];
        }
      }
      [self.textStore appendString:text];
      [self setNeedsDisplay];
    }
  }
}
 
/**
 * 刪除文本
 */
- (void)deleteBackward {
  if (self.textStore.length > 0) {
    [self.textStore deleteCharactersInRange:NSMakeRange(self.textStore.length - 1, 1)];
   if ([self.delegate respondsToSelector:@selector(passWordDidChange:)]) {
      [self.delegate passWordDidChange:self];
    }
  }
  [self setNeedsDisplay];
}
 
/**
 * 是否能成為第一響應(yīng)者
 */
- (BOOL)canBecomeFirstResponder {
  return YES;
}
 
/**
 * 點(diǎn)擊成為第一相應(yīng)者
 */
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
  if (![self isFirstResponder]) {
    [self becomeFirstResponder];
  }
}

Dessinez la zone de saisie du mot de passe via CoreGraphics

L'idée de mise en ?uvre est de dessiner l'extérieur de la zone de saisie du mot de passe via la zone du framework CoreGraphics et le petit point noir à l'intérieur, puis jugez le nombre de chiffres saisis en utilisant la cha?ne obtenue à partir du clavier. L'implémentation spécifique est la suivante?:

/**
 * 設(shè)置正方形的邊長(zhǎng)
 */
- (void)setSquareWidth:(CGFloat)squareWidth {
  _squareWidth = squareWidth;
  [self setNeedsDisplay];
}
 
/**
 * 設(shè)置鍵盤的類型
 */
- (UIKeyboardType)keyboardType {
  return UIKeyboardTypeNumberPad;
}
 
/**
 * 設(shè)置密碼的位數(shù)
 */
- (void)setPassWordNum:(NSUInteger)passWordNum {
  _passWordNum = passWordNum;
  [self setNeedsDisplay];
}
 
/**
 * 繪制
 */
- (void)drawRect:(CGRect)rect {
  CGFloat height = rect.size.height;
  CGFloat width = rect.size.width;
  CGFloat x = (width - self.squareWidth*self.passWordNum)/2.0;
  CGFloat y = (height - self.squareWidth)/2.0;
  CGContextRef context = UIGraphicsGetCurrentContext();
  //畫(huà)外框
  CGContextAddRect(context, CGRectMake( x, y, self.squareWidth*self.passWordNum, self.squareWidth));
  CGContextSetLineWidth(context, 1);
  CGContextSetStrokeColorWithColor(context, self.rectColor.CGColor);
  CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
  //畫(huà)豎條
  for (int i = 1; i <= self.passWordNum; i++) {
    CGContextMoveToPoint(context, x+i*self.squareWidth, y);
    CGContextAddLineToPoint(context, x+i*self.squareWidth, y+self.squareWidth);
     CGContextClosePath(context);
  }
  CGContextDrawPath(context, kCGPathFillStroke);
  CGContextSetFillColorWithColor(context, self.pointColor.CGColor);
  //畫(huà)黑點(diǎn)
  for (int i = 1; i <= self.textStore.length; i++) {
    CGContextAddArc(context, x+i*self.squareWidth - self.squareWidth/2.0, y+self.squareWidth/2, self.pointRadius, 0, M_PI*2, YES);
    CGContextDrawPath(context, kCGPathFill);
  }
}
<.>Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de tous. Merci pour votre aide et j'espère que tout le monde soutiendra le site Web PHP chinois.

Pour plus d'implémentation iOS de zones de saisie de mot de passe (protocole UIKeyInput) similaires à WeChat et Alipay, veuillez faire attention au site Web PHP chinois?!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276