>  기사  >  위챗 애플릿  >  iOS는 WeChat 및 Alipay(UIKeyInput 프로토콜)와 유사한 비밀번호 입력 상자를 구현합니다.

iOS는 WeChat 및 Alipay(UIKeyInput 프로토콜)와 유사한 비밀번호 입력 상자를 구현합니다.

高洛峰
高洛峰원래의
2017-01-10 09:37:202347검색

현재 프로젝트에서 빨간 봉투 보내기 기능을 구현해야 하므로 주로 UIKeyInput 프로토콜과 CoreGraphics 프레임워크를 사용하여 비밀번호 입력 상자에 대한 컨트롤을 작성했습니다. 괜찮다면 내 아이디어와 제작 과정을 적어서 모두와 공유하겠습니다.

iOS는 WeChat 및 Alipay(UIKeyInput 프로토콜)와 유사한 비밀번호 입력 상자를 구현합니다.CoreGraphics를 통해 비밀번호 입력 상자 그리기

구현 아이디어는 다음과 같습니다. CoreGraphics 프레임워크 상자와 내부의 작은 검은 점을 통해 비밀번호 입력 상자 외부를 확인한 다음 키보드에서 얻은 문자열을 사용하여 입력 자릿수를 판단합니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 많은 분들이 PHP 중국어 홈페이지를 응원해주시기를 바라겠습니다.
#pragma mark - UIKeyInput
/**
 * 用于显示的文本对象是否有任何文本
 */
- (BOOL)hasText {
  return self.textStore.length > 0;
}
 
/**
 * 插入文本
 */
- (void)insertText:(NSString *)text {
  if (self.textStore.length < self.passWordNum) {
    //判断是否是数字
    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];
}
 
/**
 * 是否能成为第一响应者
 */
- (BOOL)canBecomeFirstResponder {
  return YES;
}
 
/**
 * 点击成为第一相应者
 */
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
  if (![self isFirstResponder]) {
    [self becomeFirstResponder];
  }
}

WeChat 및 Alipay와 유사한 비밀번호 입력 상자(UIKeyInput 프로토콜)의 더 많은 iOS 구현을 보려면 PHP 중국어 웹사이트에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.