




下載本文檔
版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年6人股東合作協(xié)議書模板
- 五年級上冊數(shù)學(xué)教案-4.4 探索活動:三角形的面積(8)-北師大版
- 五年級下冊數(shù)學(xué)教案-3.2 2和5的倍數(shù)的特征丨蘇教版
- 8-數(shù)學(xué)廣角-搭配(二)-人教版三年級下冊數(shù)學(xué)單元測試卷(含答案和解析)-
- 《木蘭詩》歷年中考古詩欣賞試題匯編(截至2024年)
- Unit Six《 Lesson 17 Happy Chinese New Year to Our Family!》(教學(xué)設(shè)計(jì))-2024-2025學(xué)年北京版(2024)英語一年級上冊
- 2024年磁粉離合器項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 2025年度個(gè)人與環(huán)??萍脊经h(huán)保項(xiàng)目提成合同
- 2025年度便利店加盟店合作協(xié)議
- 2025年度離職員工解除勞動合同保密協(xié)議書及保密承諾書
- 論電視劇《知否知否應(yīng)是綠肥紅瘦》的現(xiàn)代家庭教育觀及啟示
- (正式版)JTT 421-2024 港口固定式起重機(jī)安全要求
- 地連墻施工MJS工法樁施工方案
- 《電力建設(shè)施工技術(shù)規(guī)范 第2部分:鍋爐機(jī)組》DLT 5190.2
- 教案設(shè)計(jì)常見問題及解決措施
- (正式版)JBT 14682-2024 多關(guān)節(jié)機(jī)器人用伺服電動機(jī)技術(shù)規(guī)范
- 《寧向東的清華管理學(xué)課》學(xué)習(xí)筆記
- 信訪維穩(wěn)工作培訓(xùn)
- 品牌社群視角下顧客參與價(jià)值共創(chuàng)的影響研究-基于小米社群運(yùn)營案例分析
- 《銀行保險(xiǎn)理財(cái)沙龍》課件
- 像科學(xué)家一樣思考-怎么做-怎么教-
評論
0/150
提交評論