使用UISearchBar实现自定义键盘的实现?

我尝试使用UISearchBar实现自定义键盘。首先,我使用UISearchBar的所有mainclass.h都是这个样子

#import <UIKit/UIKit.h> #import <QuartzCore/QuartzCore.h> @class PashtoKeyboard; @class SearchBar; @interface MainViewController : UIViewController<UISearchBarDelegate > { IBOutlet SearchBar *searchBar; PashtoKeyboard *pashtoKeyboard; } @property(nonatomic,retain) PashtoKeyboard *pashtoKeyboard; @property (nonatomic,retain) SearchBar *searchBar; @end 

现在我的主课

 #import "MainViewController.h" #import "PashtoKeyboard.h" #import "SearchBar.h" @implementation MainViewController @synthesize pashtoKeyboard,searchBar; - (void)viewDidLoad { [super viewDidLoad]; //Create Pashto Keyboard PashtoKeyboard *pashtoKey = [[PashtoKeyboard alloc] initWithFrame:CGRectMake(0.0, 460.0-216.0, 320.0, 216.0)]; [pashtoKey loadView]; //[self.view addSubview:hebKey]; [pashtoKey addTarget:self action:@selector(pashtoKeyboard_clicked:) forControlEvents:1001]; [pashtoKey addTarget:self action:@selector(pashtoKeyboardBackspace_clicked:) forControlEvents:1002]; [pashtoKey addTarget:self action:@selector(pashtoKeyboardEnter_clicked:) forControlEvents:1003]; [self setPashtoKeyboard:pashtoKey]; //[hebKey setHidden:YES]; [pashtoKey release]; searchBar.inputView = pashtoKey; searchBar.delegate=self; searchBar.userInteractionEnabled=YES; } #pragma mark Pashto Keyboard Methods - (void) pashtoKeyboard_clicked:(id)sender{ [searchBar setText:[pashtoKeyboard keyboardText]]; } - (void) pashtoKeyboardBackspace_clicked:(id)sender{ [searchBar setText:[pashtoKeyboard keyboardText]]; } - (void) pashtoKeyboardEnter_clicked:(id)sender{ [searchBar setText:[pashtoKeyboard keyboardText]]; } 

在SearchBar.h中

 #import <UIKit/UIKit.h> @interface SearchBar : UISearchBar { } @property (readwrite, retain) UIView *inputView; @end 

在SearchBar.m中

 #import "SearchBar.h" @implementation SearchBar @synthesize inputView; - (void)dealloc { [super dealloc]; } @end 

然后最后我有PashtoKeyboard.h和PashtoKeyboard.m在那里我创build我的自定义键盘,由于大型编码我没有显示这些类代码在这里我testing了textveiw和textfield。 但它不适用于UISearchBar。有人可以指导我如何做到这一点

您需要设置inputView正在使用的UITextFieldinputView以获取用户input。 您可以通过searchsearch栏的子视图并find文本字段来完成此操作。 将其添加到主类的viewDidLoad方法中:

 for (UIView *view in searchBar.subviews) { if ([view isKindOfClass: [UITextField class]]) { UITextField *textField = (UITextField *)view; textField.inputView = // Your custom keyboard (PashtoKeyboard) break; } }