亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

ios toolbar 的自定義

系統 2715 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條評論
主站蜘蛛池模板: 奇米影视四色7777 | 97成人免费视频 | 二级毛片在线观看 | 日产国产精品久久久久久 | 香蕉综合网 | 色偷偷女人的天堂a在线 | 精品日本亚洲一区二区三区 | 天海翼一区二区在线观看 | 婷婷综合激情五月中文字幕 | 久久机热一这里只精品 | 毛片大全高清免费 | 一级毛片免费观看不收费 | 久久亚洲国产精品五月天婷 | 国产精品第一区亚洲精品 | 九九影视理伦片 | 草久在线观看 | 操操操日日日 | 国产高清免费午夜在线视频 | 337p欧洲亚洲大胆艺术 | 日韩二三区 | 欧美久久综合网 | 毛片大全免费 | 天天干天天色天天干 | 国产v欧美v日本v精品 | 中文字幕一区二区三区在线观看 | 欧美在线视频一区二区三区 | 日韩字幕无线乱码 | 成人亚洲精品7777 | 欧美一区二区三区视频在线观看 | 亚洲高清色 | 精品国产成人三级在线观看 | 精品一区二区久久久久久久网精 | 黄页网址在线免费观看 | 日本欧美一区二区三区 | 日本一级做人免费视频 | 色一色综合 | 久久久穴 | 久久草在线 | 免费不卡毛片 | 精品中文字幕一区二区三区四区 | 欧美日韩无线码在线观看 |