1

UISearchBar を使用して customkeyboard を実装しようとしています。まず、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

今私のmainclass.m

#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 があります。コーディングが大きいため、ここではこれらのクラス コードを表示しません。textveiw と textfield でテストしました。しかし、それはUISearchBarでは機能しません.誰かがこれを行う方法を教えてくれます.thanx

4

1 に答える 1

1

ユーザー入力を取得するには、 が使用しているinputViewを設定する必要があります。これを行うには、検索バーのサブビューを検索してテキスト フィールドを見つけます。これをあなたのメソッドに追加してください:UITextFieldUISearchBarviewDidLoadmainclass

for (UIView *view in searchBar.subviews) {
    if ([view isKindOfClass: [UITextField class]]) {
        UITextField *textField = (UITextField *)view;
        textField.inputView = // Your custom keyboard (PashtoKeyboard)
        break;
    }
}
于 2013-05-13T23:15:54.197 に答える