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

ホームページ WeChat アプレット WeChatの開発 iOS は WeChat や Alipay と同様のパスワード入力ボックスを?qū)g裝します (UIKeyInput プロトコル)

iOS は WeChat や Alipay と同様のパスワード入力ボックスを?qū)g裝します (UIKeyInput プロトコル)

Jan 10, 2017 am 09:37 AM

現(xiàn)在、プロジェクトに赤い封筒を送信する機(jī)能を?qū)g裝する必要があるので、主に UIKeyInput プロトコルと CoreGraphics フレームワークを使用して、パスワード入力ボックス コントロールを作成しました。効果が WeChat 支払いに似ていると感じたら、実行します。私のアイデアと制作プロセスを書き留めておきます。

iOS は WeChat や Alipay と同様のパスワード入力ボックスを?qū)g裝します (UIKeyInput プロトコル)

カスタム ビューに入力機(jī)能 (UIKeyInput プロトコル) を持たせます

UIKeyInput プロトコルは、レスポンダーに簡単なキーボード入力機(jī)能を提供し、キーボードを必要とするレスポンダーをファーストレスポンダーにさせるだけです。 UIKeyInput プロトコルで実裝する必要があるメソッドは 3 つあり、次のメソッドです:

#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];
  }
}

CoreGraphics を使用してパスワード入力ボックスを描畫します

実裝のアイデアは、パスワード入力ボックスの外枠を描畫し、 CoreGraphics フレームワークを介して內(nèi)部の小さな黒い點(diǎn)を使用し、キーボードから取得した文字列から入力桁數(shù)を決定します。具體的な実裝は次のとおりです。

/**
 * 設(shè)置正方形的邊長
 */
- (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();
  //畫外框
  CGContextAddRect(context, CGRectMake( x, y, self.squareWidth*self.passWordNum, self.squareWidth));
  CGContextSetLineWidth(context, 1);
  CGContextSetStrokeColorWithColor(context, self.rectColor.CGColor);
  CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
  //畫豎條
  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);
  //畫黑點(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);
  }
}

以上がこの記事の內(nèi)容です。皆様の學(xué)習(xí)に役立つとともに、皆様にも PHP 中國語 Web サイトをサポートしていただければ幸いです。

WeChat や Alipay 関連の記事と同様のパスワード入力ボックス (UIKeyInput プロトコル) の iOS 実裝については、PHP 中國語 Web サイトに注目してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)