Создание пользовательской клавиатуры на iPad, нужна помощь с некоторыми деталями

#xcode #ipad

#xcode #iPad

Вопрос:

Прямо сейчас я создаю пользовательскую клавиатуру для приложения. Я настроил клавиатуру, которая имитирует внешний вид обычной клавиатуры, но с определенными клавишами, которые я ввел. Я также настроил контроллер просмотра, в котором есть изображение вместе с серией прозрачных UIButtons, размещенных над каждой из клавиш в IB. Пока что вот код:

 //CustomKeyBoardViewController.h

#import <UIKit/UIKit.h>

@protocol CustomKeyBoardViewControllerDelegate
- (void) buttonTapped:(NSString*)text;
- (void) doneTapped;
@end


@interface CustomKeyBoardViewController : UIViewController {
    id<CustomKeyBoardViewControllerDelegate> _delegate;
}

-(IBAction)spaceTapped:(id)sender;
-(IBAction)goTapped:(id)sender;

-(IBAction)xTapped:(id)sender;

-(IBAction)plusTapped:(id)sender;
-(IBAction)minusTapped:(id)sender;
-(IBAction)arrowTapped:(id)sender;
-(IBAction)slashTapped:(id)sender;

-(IBAction)oneTapped:(id)sender;
-(IBAction)twoTapped:(id)sender;
-(IBAction)threeTapped:(id)sender;
-(IBAction)fourTapped:(id)sender;
-(IBAction)fiveTapped:(id)sender;
-(IBAction)sixTapped:(id)sender;
-(IBAction)sevenTapped:(id)sender;
-(IBAction)eightTapped:(id)sender;
-(IBAction)nineTapped:(id)sender;
-(IBAction)zeroTapped:(id)sender;

@property(nonatomic, assign) id<CustomKeyBoardViewControllerDelegate> _delegate;

@end


//CustomKeyBoardViewController.m

#import "CustomKeyBoardViewController.h"

@implementation CustomKeyBoardViewController

@synthesize _delegate, Keyboard;

- (IBAction)spaceTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@" "];}}

- (IBAction)goTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"Go"];}}


- (IBAction)xTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"x"];}}


- (IBAction)plusTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@" "];}}

- (IBAction)minusTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"-"];}}

- (IBAction)arrowTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"^"];}}

- (IBAction)slashTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"/"];}}


- (IBAction)oneTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"1"];}}

- (IBAction)twoTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"2"];}}

- (IBAction)threeTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"3"];}}

- (IBAction)fourTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"4"];}}

- (IBAction)fiveTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"5"];}}

- (IBAction)sixTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"6"];}}

- (IBAction)sevenTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"7"];}}

- (IBAction)eightTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"8"];}}

- (IBAction)nineTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"9"];}}

- (IBAction)zeroTapped:(id)sender {if (_delegate != nil) {[_delegate buttonTapped:@"0"];}}

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return ((interfaceOrientation == UIInterfaceOrientationPortrait) || 
            (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown));
}


- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];}


- (void)viewDidUnload {[super viewDidUnload];}


- (void)dealloc {[super dealloc];}


@end
  

Я разобрался с этим с помощью этого и этого.

Проблема заключается в ее использовании в другом контроллере просмотра. Я читал, что вам нужно использовать пользовательский UIView и сделать его inputView для текстовых полей этого контроллера представления.

В чем мне нужна помощь, так это в том, чтобы поместить это в представление вместо контроллера представления таким образом, чтобы это работало. Это мои основные вопросы:

Нужно ли мне вместо этого поместить весь этот код в представление?

Нужен ли мне вообще этот контроллер просмотра?

Если мне не нужен view controller, что мне нужно сделать, чтобы поместить изображение клавиатуры в view?

Любая помощь приветствуется