欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

ios toolbar 的自定義

系統 2771 0

iOS開發 鍵盤添加工具條(toolbar)

原文地址  http://gaohaijun.blog.163.com/blog/static/17669827120119233349519/

IOS 開發中,iphone/ipad/itouch采用的觸摸設計,本身沒有硬件鍵盤,一般都是點擊輸入框之后,彈出一個虛擬鍵盤出來,因此開發中,經常在完 成編輯輸入之后,要寫程序代碼來關閉軟鍵盤的輸出,非常繁瑣,當然關閉軟鍵盤的方式有很多。本文要分享的是一個鍵盤頂部工具條的類,通過這個工具條,可以 很方便的關閉鍵盤,而且有上一項,下一項的輸入框切換,非常方便,效果如下圖所示:

?

ios toolbar 的自定義

一、 KeyBoardTopBar類文件

??1)KeyBoardTopBar.h頭文件

?

?

#import <Foundation/Foundation.h>
?
?
?@interface KeyBoardTopBar : NSObject {
?
?UIToolbar?????? *view;?????????????????????? //工具條???????
?
?NSArray???????? *textFields;???????????????? //輸入框數組
?
?BOOL??????????? allowShowPreAndNext;???????? //是否顯示上一項、下一項
?
?BOOL??????????? isInNavigationController;??? //是否在導航視圖中
?
?UIBarButtonItem *prevButtonItem;???????????? //上一項按鈕
?
?UIBarButtonItem *nextButtonItem;???????????? //下一項按鈕
?
?UIBarButtonItem *hiddenButtonItem;?????????? //隱藏按鈕
?
?UIBarButtonItem *spaceButtonItem;??????????? //空白按鈕
?
?UITextField???? *currentTextField;?????????? //當前輸入框
?
?}
?
?@property(nonatomic,retain) UIToolbar *view;
?
?
?-(id)init;
?
?-(void)setAllowShowPreAndNext:(BOOL)isShow;
?
?-(void)setIsInNavigationController:(BOOL)isbool;
?
?-(void)setTextFieldsArray:(NSArray *)array;
?
?-(void)showPrevious;
?
?-(void)showNext;
?
?-(void)showBar:(UITextField *)textField;
?
?-(void)HiddenKeyBoard;
?
?@end

?

2 )KeyBoardTopBar.m實現文件

?#import "KeyBoardTopBar.h"
?
?
?@implementation KeyBoardTopBar
?
?@synthesize view;
?
?
?//初始化控件和變量
?
?-(id)init{
?
?if((self = [super init])) {
?
?prevButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"上一項" style:UIBarButtonItemStyleBordered target:self action:@selector(ShowPrevious)];
?
?nextButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"下一項" style:UIBarButtonItemStyleBordered target:self action:@selector(ShowNext)];
?
?hiddenButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"隱藏鍵盤" style:UIBarButtonItemStyleBordered target:self action:@selector(HiddenKeyBoard)];
?
?spaceButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem: UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
?
?view = [[UIToolbar alloc] initWithFrame:CGRectMake(0,480,320,44)];
?
?view.barStyle = UIBarStyleBlackTranslucent;
?
?view.items = [NSArray arrayWithObjects:prevButtonItem,nextButtonItem,spaceButtonItem,hiddenButtonItem,nil];
?
?allowShowPreAndNext = YES;
?
?textFields = nil;
?
?isInNavigationController = YES;
?
?currentTextField = nil;
?
?}
?
?return self;
?
?}
?
?//設置是否在導航視圖中
?
?-(void)setIsInNavigationController:(BOOL)isbool{
?
?isInNavigationController = isbool;
?
?}
?
?//顯示上一項
?
?-(void)showPrevious{
?
?if (textFields==nil) {
?
?return;
?
?}
?
?NSInteger num = -1;
?
?for (NSInteger i=0; i<[textFields count]; i++) {
?
?if ([textFields objectAtIndex:i]==currentTextField) {
?
?num = i;
?
?break;
?
?}
?
?}
?
?if (num>0){
?
?[[textFields objectAtIndex:num] resignFirstResponder];
?
?[[textFields objectAtIndex:num-1 ] becomeFirstResponder];
?
?[self showBar:[textFields objectAtIndex:num-1]];
?
?}
?
?}
?
?//顯示下一項
?
?-(void)showNext{
?
?if (textFields==nil) {
?
?return;
?
?}
?
?NSInteger num = -1;
?
?for (NSInteger i=0; i<[textFields count]; i++) {
?
?if ([textFields objectAtIndex:i]==currentTextField) {
?
?num = i;
?
?break;
?
?}
?
?}
?
?if (num<[textFields count]-1){
?
?[[textFields objectAtIndex:num] resignFirstResponder];
?
?[[textFields objectAtIndex:num+1] becomeFirstResponder];
?
?[self showBar:[textFields objectAtIndex:num+1]];
?
?}
?
?}
?
?//顯示工具條
?
?-(void)showBar:(UITextField *)textField{
?
?currentTextField = textField;
?
?if (allowShowPreAndNext) {
?
?[view setItems:[NSArray arrayWithObjects:prevButtonItem,nextButtonItem,spaceButtonItem,hiddenButtonItem,nil]];
?
?}
?
?else {
?
?[view setItems:[NSArray arrayWithObjects:spaceButtonItem,hiddenButtonItem,nil]];
?
?}
?
?if (textFields==nil) {
?
?prevButtonItem.enabled = NO;
?
?nextButtonItem.enabled = NO;
?
?}
?
?else {
?
?NSInteger num = -1;
?
?for (NSInteger i=0; i<[textFields count]; i++) {
?
?if ([textFields objectAtIndex:i]==currentTextField) {
?
?num = i;
?
?break;
?
?}
?
?}
?
?if (num>0) {
?
?prevButtonItem.enabled = YES;
?
?}
?
?else {
?
?prevButtonItem.enabled = NO;
?
?}
?
?if (num<[textFields count]-1) {
?
?nextButtonItem.enabled = YES;
?
?}
?
?else {
?
?nextButtonItem.enabled = NO;
?
?}
?
?}
?
?[UIView beginAnimations:nil context:nil];
?
?[UIView setAnimationDuration:0.3];
?
?if (isInNavigationController) {
?
?view.frame = CGRectMake(0, 201-40, 320, 44);
?
?}
?
?else {
?
?view.frame = CGRectMake(0, 201, 320, 44);
?
?}
?
?[UIView commitAnimations];
?
?}
?
?//設置輸入框數組
?
?-(void)setTextFieldsArray:(NSArray *)array{
?
?textFields = array;
?
?}
?
?//設置是否顯示上一項和下一項按鈕
?
?-(void)setAllowShowPreAndNext:(BOOL)isShow{
?
?allowShowPreAndNext = isShow;
?
?}
?
?//隱藏鍵盤和工具條
?
?-(void)HiddenKeyBoard{
?
?if (currentTextField!=nil) {
?
?[currentTextField? resignFirstResponder];
?
?}
?
?[UIView beginAnimations:nil context:nil];
?
?[UIView setAnimationDuration:0.3];
?
?view.frame = CGRectMake(0, 480, 320, 44);
?
?[UIView commitAnimations];
?
?}
?
?- (void)dealloc {
?
?[view release];
?
?[textFields release];
?
?[prevButtonItem release];
?
?[nextButtonItem release];
?
?[hiddenButtonItem release];
?
?[currentTextField release];
?
?[spaceButtonItem release];
?
???? [super dealloc];
?
?}
?
?@end

?

?

?

?

二、如何使用

?? 1)在用到輸入的controller類.h頭文件中,首先引入 導入 KeyBoardTopBar

?

?

?

#import "KeyBoardTopBar.h"

?

NSMutableArray *editFieldArray; ? ? //存放視圖中可編輯的控件

?

KeyBoardTopBar *keyboardbar;

?

?

?

?? 2) 在用到輸入的controller類.m實現文件中,首先初始化 KeyBoardTopBar類的實例,如下:

?

?

?

?? ? ? ?keyboardbar = [[KeyBoardTopBar alloc]init];

?

[keyboardbar? setAllowShowPreAndNext:YES];

?

[keyboardbar setIsInNavigationController:NO];

?

[keyboardbar setTextFieldsArray:editFieldArray];

?

[self.view addSubview:keyboardbar.view];

??3) 在用到輸入的controller類.m實現文件中,在此以UITextField為例說明,在它的回調方法中,實現如下:

?

?

- (void)textFieldDidBeginEditing:(UITextField *)textField{

?

[keyboardbar showBar:textField];// KeyBoardTopBar的實例對象調用顯示鍵盤方法

?

}

?

?

?

三、總結

?

??上述的基本原理就是在鍵盤的上方,加一個透明狀的工具條;當然不需要專門定義類,也可以的,可以直接在

?

需要調用鍵盤的地方加入工具條,讓你的工具條隨著鍵盤的出現而出現,消失而消失!

?

?

?

??大道至簡,有更好的方法,希望一起討論交流,謝謝!

?

ios toolbar 的自定義


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧洲视频在线观看 | 欧美性生活区 | 欧美日韩亚洲国内综合网俺 | 亚洲综合五月天激动情网 | 免费黄色电影在线观看 | 99久久精品免费看国产 | 亚洲成人激情av | 天天天天天天操 | 国产亚洲美女精品久久久久 | 亚洲精品久久久久久久久久吃药 | 在线中文天堂 | 久久免费精品视频 | 一区二区三区视频在线 | 日本高清无卡码一区二区久久 | 一级片免费观看 | 怦然心动50免费完整版 | 中文字幕免费在线观看动作大片 | 在线观看国产wwwa级羞羞视频 | 国产精品久久久久久久久久久久冷 | 久青草久青草高清在线播放 | 波多野结衣在线免费 | 色播视频在线观看 | 欧美色欧美 | 波多野结衣中文在线观看 | 国产精品久久久久久久久久久久 | 天天夜夜人人 | 欧美一区二区三区爽大粗免费 | 99re视频 | 欧美人妖channelsantini同性 | 一级毛片观看 | 狠狠色丁香婷婷综合橹不卡 | 三级在线观看 | 欧美成人免费丝袜视频在线观看 | 99热久久66是国产免费 | 色午夜 | 国产成人精品视频免费 | 日本无码欧美激情在线视频 | 精品日韩欧美一区二区三区在线播放 | 成人性视频免费网站 | 亚洲免费小视频 | 青青青青手机在线视频观看国产 |