【移動應(yīng)用開發(fā)技術(shù)】iOS開發(fā)類似支付寶密碼輸入框功能的示例分析_第1頁
【移動應(yīng)用開發(fā)技術(shù)】iOS開發(fā)類似支付寶密碼輸入框功能的示例分析_第2頁
【移動應(yīng)用開發(fā)技術(shù)】iOS開發(fā)類似支付寶密碼輸入框功能的示例分析_第3頁
【移動應(yīng)用開發(fā)技術(shù)】iOS開發(fā)類似支付寶密碼輸入框功能的示例分析_第4頁
【移動應(yīng)用開發(fā)技術(shù)】iOS開發(fā)類似支付寶密碼輸入框功能的示例分析_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余2頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】iOS開發(fā)類似支付寶密碼輸入框功能的示例分析

這篇文章給大家分享的是有關(guān)iOS開發(fā)類似支付寶密碼輸入框功能的示例分析的內(nèi)容。在下覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨在下過來看看吧。

這篇文章主要介紹了iOS實(shí)現(xiàn)類似微信和支付寶的密碼輸入框,通過UIKeyInput協(xié)議為響應(yīng)者提供簡單的鍵盤輸入的功,再通過CoreGraphics繪制出密碼輸入框,感興趣的小伙伴們可以參考一下目前在項(xiàng)目中需要實(shí)現(xiàn)發(fā)紅包的功能,自己就寫了一個(gè)密碼輸入框的控件,主要用到了UIKeyInput協(xié)議和CoreGraphics框架,效果類似微信支付,感覺還行就把我的思路和制作過程寫下來給大家分享一下。讓你的自定義View具備輸入的功能(UIKeyInput協(xié)議)通過UIKeyInput協(xié)議可以為響應(yīng)者提供簡單的鍵盤輸入的功能,讓需要鍵盤的responder成為第一響應(yīng)者就行了。UIKeyInput協(xié)議必須實(shí)現(xiàn)的有三個(gè)方法,分別是以下方法:#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];

}

/**

*

是否能成為第一響應(yīng)者

*/

-

(BOOL)canBecomeFirstResponder

{

return

YES;

}

/**

*

點(diǎn)擊成為第一相應(yīng)者

*/

-

(void)touchesBegan:(NSSet<UITouch

*>

*)touches

withEvent:(UIEvent

*)event

{

if

(![self

isFirstResponder])

{

[self

becomeFirstResponder];

}

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

*

設(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.

溫馨提示

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

最新文檔

評論

0/150

提交評論