ios開發(fā)選擇器,iOS版本自由選擇

ios開發(fā) uitextfield 怎么判斷輸入的漢字

這個要求很奇怪,網(wǎng)上沒有任何相關(guān)的信息,大概是因為通常情況下,很少需要這樣做的吧。

柯坪網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)建站于2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運(yùn)維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。

首先是獲得UITextField內(nèi)容改變的事件(嗯,我還是習(xí)慣叫事件……),apple沒有直接給一個類似ValueChanged的事件。UITextFieldDelegate提供了兩個方法(我又用了方法這個名詞……好了,就是objective-c的message了):

- (void)textFieldDidBeginEditing:(UITextField *)textField

- (void)textFieldDidEndEditing:(UITextField *)textField

看名字就知道意思了,一個是編輯開始,一個是編輯結(jié)束。我們需要通過這兩個方法來編寫自己的ValueChanged事件。

在編輯開始時,向通告中心(我不知道標(biāo)準(zhǔn)譯法是什么)發(fā)送一個通知,以便調(diào)用我們自己編寫的回調(diào)方法。

- (void)textFieldDidBeginEditing:(UITextField *)textField

{

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFieldDidChange:) name:UITextFieldTextDidChangeNotification object:_activeTextField];

}

解釋一下[NSNotificationCenter defaultCenter]addObserver的參數(shù):

observer

用來處理消息的對象

selector

選擇器,也就是我們自己編寫的方法名稱,這個方法必須有且僅有一個NSNotification類型的參數(shù)

name

通知名稱。

object

發(fā)送通知的對象,也就是我們要處理的UITextField

下面是自己編寫的方法代碼:

- (void)textFieldDidChange:(NSNotification *)note

{

//可以用note.object來獲取產(chǎn)生該消息的UITextField

if (_activeTextField.text.length 0) {

int utfCode = 0;

void *buffer = utfCode;

NSRange range = NSMakeRange(_activeTextField.text.length - 1, 1);

NSString *word = [_activeTextField.text substringWithRange:range];

BOOL b = [word getBytes:buffer maxLength:2 usedLength:NULL encoding:NSUTF16LittleEndianStringEncoding options:NSStringEncodingConversionExternalRepresentation range:range remainingRange:NULL];

if (b (utfCode = 0x4e00 utfCode = 0x9fa5)) {

NSLog(@"it is chinese,%@", word);

}

}

}

在代碼中,檢查當(dāng)前輸入的字符是否為漢字。

getBytes是NSString的實例方法,參數(shù)如下:

buffer

獲取字符的字節(jié)數(shù)據(jù)

maxLength

buffer的最大長度

usedLength

實際寫入的長度,不需要的話可以傳遞NULL

encoding

字符編碼常數(shù),不同編碼方式轉(zhuǎn)換后的字節(jié)長是不一樣的,這里我用了UTF16 Little-Endian,maxLength為2字節(jié),如果使用Unicode,則需要4字節(jié)。

options

編碼轉(zhuǎn)換的選項,有兩個值,分別是NSStringEncodingConversionAllowLossy和NSStringEncodingConversionExternalRepresentation

range

獲取的字符串中的字符范圍,這里我設(shè)置的是字符串的最后一個字符。

remainingRange

建議獲取的范圍,可以傳遞NULL。

返回值

成功返回YES,否則返回NO

unicode中文編碼范圍是0x4e00~0x9fa5,注意encoding參數(shù)不同的話,獲得的字節(jié)數(shù)據(jù)是有區(qū)別的,詳情可參考unicode編碼知識。

最后,在編輯結(jié)束的消息中移除通知。

- (void)textFieldDidEndEditing:(UITextField *)textField

{

[[NSNotificationCenter defaultCenter]removeObserver:self name:UITextFieldTextDidChangeNotification object:_activeTextField];

}

參考:

iphone開發(fā)者選項設(shè)置有什么用?

ios 上的開發(fā)者選項完全是為軟件開發(fā)者服務(wù)的。

(1)Instruments可以理解為是一個日志記錄工具,可以記錄下電量和網(wǎng)絡(luò)的使用情況,利用Xcode可以導(dǎo)出這些日志。

(2)Network Link Conditioner是模擬網(wǎng)絡(luò),可以讓用戶模擬不同的網(wǎng)絡(luò)連接和帶寬,可供Mac和iOS開發(fā)者測試自己的程序在不同網(wǎng)絡(luò)環(huán)境下的表現(xiàn)。

(3)還有其他選項像是IDA廣告測試、廣告刷新率測試、媒體服務(wù)測試、歐盟音量限制測試等內(nèi)容。

ios上的開發(fā)者選項,這個功能從iOS系統(tǒng)剛開始時就已經(jīng)存在了。想要打開這個功能,我們需要滿足一定的條件,首先你需要將iPhone和一臺Mac電腦相連接,然后在Mac上打開Xcode開發(fā)工具,此時你iPhone的設(shè)置里就會出現(xiàn)“開發(fā)者”這個選項了。

iOS開發(fā):檢測UITextField文本框的狀態(tài)

全局登錄button

1.1需要在- (void)viewWillAppear:(BOOL)animated方法添加通知中心

- (void)viewWillAppear:(BOOL)animated{

[super viewWillAppear:animated];

//添加通知中心

//添加文本框通知中心

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(gosave:) name:UITextFieldTextDidChangeNotification object:nil];

//selector是選擇器,Observer是觀察者,name是檢測的類型 object填nil就行

//這里檢測的是文本框text值改變的時候,另外還可以檢測:

UITextFieldTextDidBeginEditingNotification;開始編輯時

UITextFieldTextDidEndEditingNotification;結(jié)束編輯時

UITextFieldTextDidChangeNotification;值改變時

}

1.2在當(dāng)前視圖控制器的.m中實現(xiàn)gosave方法

- (void)gosave:(NSNotification *) Notification{

UITextField * textField = Notification.object;

if (self.phoneTextFld.text.length == 11 self.codeTextFld.text.length == 4 [XSTTools judgeWithPhone:self.phoneTextFld.text andWithPwd:nil andWithCode:self.codeTextFld.text andShowView:self.view]) {

//這個if判斷是我自己項目需求寫的,你可以根據(jù)自己項目來寫,只需要在滿足條件的時候?qū)utton的selected設(shè)置為YES不滿足條件設(shè)置為NO即可

self.loginButton.selected = YES;

self.loginButton.userInteractionEnabled = YES;

}else{

1.3移除通知中心

- (void)viewWillDisappear:(BOOL)animated{

[super viewWillDisappear:animated];

//移除通知中心

[[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:nil];

[self.timer invalidate];

}

1.當(dāng)然上面只是一個很小的用法,你可以擴(kuò)展其他用法,比如還可以檢測鍵盤的高度來實現(xiàn)對uikit控件的frame上移和下拉。這個用法主要用在當(dāng)textField文本框被彈出鍵盤遮擋時。

ps:需要注意的是:

1.1添加通知中心一定要寫在視圖即將顯示的方法-(void)viweWillApper:(animated)里面,不能寫在-(void)viewDidLoad里面。

1.2視圖即將消失的時候?qū)⑼ㄖ行囊瞥?,不然會有?nèi)存泄露。

因為:viewDidLoad只會在UIViewController的實例化對象push或者present的時候執(zhí)行一次。所以當(dāng)我們返回這個視圖的時候通知中心已經(jīng)移除了,就會出錯。

iOS標(biāo)簽選擇器

簡單的下拉標(biāo)簽選擇器,提供選中和取消選中,單鏈表和雙鏈表組合,支持代理配置圖片,可以自定義配置

倉庫地址: Demo

通過代理設(shè)置每列樣式,數(shù)據(jù)原,代理數(shù)據(jù)傳遞給tableView,collectionView刷新數(shù)據(jù),通過每列樣式更改樣式

可支持的配置項

final class DMConfiguration {

///Cell的高度,默認(rèn)44

var cellHeight:CGFloat=44;

///內(nèi)容的高度

var contentViewHeight:CGFloat = 300;

///是否自適應(yīng)高度,默認(rèn)為False

var isAdaptiveHeight:Bool = false

///標(biāo)題顏色

var textColor:UIColor = UIColor.darkGray

// 當(dāng)有二級列表時,點擊row 是否調(diào)用點擊代理方法

var isRefreshWhenHaveRightItem:Bool = false

///標(biāo)題選中顏色

var highlightedTextColor:UIColor = UIColor.orange

///有多少分區(qū)

var numOfMenu:Int=0;

///字體大小

var fontSize:CGFloat=15

///標(biāo)題的顏色

var titleColor:UIColor= .darkGray

///是否顯示分割線顏色.默認(rèn)顯示

var isShowSeparator:Bool = true

///分割線占比高度

var separatorHeighPercent:CGFloat = 0.5;

///分割線顏色

var separatorColor:UIColor = .lightGray

///指示器圖標(biāo)位置,默認(rèn)文字右側(cè)

var indicatorAlignType:IndicatorAlignType = .IndicatorAlignCloseToTitle

///背景顏色

var maskColor:UIColor=UIColor.init(white:0.4, alpha:0.2)

///切換條件時是否更改menu title

var isRemainMenuTitle:Bool = true

///cell文字大小

var cellTitleFont=UIFont.systemFont(ofSize:14)

init () {

? self .defaultValue()

}

func defaultValue() {

}

}

代理回調(diào)

@objc public protocol DMenuViewDataSource: NSObjectProtocol {

///返回有多少列

@objc func numberOfColumnsInMenu(menu:DropDownMenuView) - Int

///左側(cè)TableView每列有多少條數(shù)據(jù)

@objc func numberOfRowsInColumn(menu:DropDownMenuView, column:Int) -Int

///左側(cè)TableView對應(yīng)的每行的數(shù)據(jù)

@objc func titleForRowAtIndexPath(menu:DropDownMenuView, column:Int, row:Int) -DMRowData

///右側(cè)CollectionView或者TableView有多少條數(shù)據(jù)

@objc optional func numberOfRightItemInMenu(menu:DropDownMenuView, column:Int, row:Int) -Int

///右側(cè)CollectionView或者TableView對應(yīng)的每行的數(shù)據(jù)

@objc optional func titleForRightRowAtIndexPath(menu:DropDownMenuView, column:Int, leftRow:Int,??

rightRow:Int) -DMRowData

///返回每列的類型,默認(rèn)只有一個tableView

@objc optional func columnTypeInMenu(menu:DropDownMenuView, column: Int) -? ?

DMenuViewColumnType

///左邊tableView所占比例

@objc optional func leftTableViewWidthScale(menu:DropDownMenuView, column:Int) -CGFloat

}

@objc public protocol DMenuViewDelegate: NSObjectProtocol {

///點擊回掉

@objc optional func didSelectRowAtIndexPath(menu:DropDownMenuView, column:Int, leftRow:Int,?

rightRow:Int);

///標(biāo)簽選擇顯示狀態(tài)

@objc optional func menuIsShow(menu:DropDownMenuView, isShow:Bool)

}

iOS 自定義選擇器ActionSheet

默認(rèn)是YES,手勢識別器識別到touch之后,會發(fā)送touchesCancelled:withEvent: 給你觸摸的view,就不會響應(yīng)點擊事件了,只有手勢識別器響應(yīng)touch。

Demo地址 。

網(wǎng)站名稱:ios開發(fā)選擇器,iOS版本自由選擇
當(dāng)前地址:http://muchs.cn/article18/phshgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗Google搜索引擎優(yōu)化、軟件開發(fā)、域名注冊、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)