【移動應用開發(fā)技術】iOS如何實現(xiàn)類似微信和支付寶的密碼輸入框_第1頁
【移動應用開發(fā)技術】iOS如何實現(xiàn)類似微信和支付寶的密碼輸入框_第2頁
【移動應用開發(fā)技術】iOS如何實現(xiàn)類似微信和支付寶的密碼輸入框_第3頁
【移動應用開發(fā)技術】iOS如何實現(xiàn)類似微信和支付寶的密碼輸入框_第4頁
【移動應用開發(fā)技術】iOS如何實現(xiàn)類似微信和支付寶的密碼輸入框_第5頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

【移動應用開發(fā)技術】iOS如何實現(xiàn)類似微信和支付寶的密碼輸入框

在下給大家分享一下iOS如何實現(xiàn)類似微信和支付寶的密碼輸入框,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!讓你的自定義View具備輸入的功能(UIKeyInput協(xié)議)通過UIKeyInput協(xié)議可以為響應者提供簡單的鍵盤輸入的功能,讓需要鍵盤的responder成為第一響應者就行了。UIKeyInput協(xié)議必須實現(xiàn)的有三個方法,分別是以下方法:#pragma

mark

-

UIKeyInput

/**

*

用于顯示的文本對象是否有任何文本

*/

-

(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];

}

/**

*

是否能成為第一響應者

*/

-

(BOOL)canBecomeFirstResponder

{

return

YES;

}

/**

*

點擊成為第一相應者

*/

-

(void)touchesBegan:(NSSet<UITouch

*>

*)touches

withEvent:(UIEvent

*)event

{

if

(![self

isFirstResponder])

{

[self

becomeFirstResponder];

}

}通過CoreGraphics繪制出密碼輸入框實現(xiàn)的思路是通過CoreGraphics框架繪制出密碼輸入框的外框和里面的小黑點,然后通過從鍵盤上獲取到的字符串判斷輸入的位數(shù),具體實現(xiàn)如下:/**

*

設置正方形的邊長

*/

-

(void)setSquareWidth:(CGFloat)squareWidth

{

_squareWidth

=

squareWidth;

[self

setNeedsDisplay];

}

/**

*

設置鍵盤的類型

*/

-

(UIKeyboardType)keyboardType

{

return

UIKeyboardTypeNumberPad;

}

/**

*

設置密碼的位數(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);

//畫黑點

for

(int

i

=

1;

i

<=

self.textStore.length;

i++)

{

CGContextAd

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論