Buscar..


Ejemplo de teclado personalizado

Objective-C y Xib

Agregar un objetivo a un proyecto XCode existente

introduzca la descripción de la imagen aquí

En Add Target, seleccione Custom KeyBoard. introduzca la descripción de la imagen aquí

Agrega el objetivo de esta manera:

introduzca la descripción de la imagen aquí

El directorio de archivos de su proyecto debería verse así.

introduzca la descripción de la imagen aquí

Aquí myKeyBoard es el nombre del objetivo agregado

Agregue un nuevo archivo Cocoatouch de tipo de tipo UIView y agregue un archivo de interfaz

introduzca la descripción de la imagen aquí

Finalmente el directorio de tu proyecto debería verse así.

introduzca la descripción de la imagen aquí

convierte a keyBoardView.xib una subclase de keyBoardView

introduzca la descripción de la imagen aquí

Hacer interfaz en el archivo keyBoardView.xib

introduzca la descripción de la imagen aquí

Haga las conexiones a partir de la keyBoardView.xib a keyBoardView.h archivo

keyBoardView.h debería verse como

#import <UIKit/UIKit.h>

@interface keyBoardView : UIView

@property (weak, nonatomic) IBOutlet UIButton *deleteKey;
//IBOutlet for the delete Key
@property (weak, nonatomic) IBOutlet UIButton *globe;
//Outlet for the key with title globe which changes the keyboard type
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *keys;
//Contains a colloection of all the keys '0 to 9' '+' '-' and '.'

@end

En el archivo keyBoardViewController.h , importe #import "keyBoardView.h"

Declare una propiedad para teclado @property (strong, nonatomic)keyBoardView *keyboard;

Comenta el

@property (nonatomic, strong) UIButton *nextKeyboardButton and all the code associated with it

La función viewDidLoad () del archivo KeyboardViewController.m debería tener este aspecto

- (void)viewDidLoad {
    [super viewDidLoad];
    self.keyboard=[[[NSBundle mainBundle]loadNibNamed:@"keyBoardView" owner:nil options:nil]objectAtIndex:0];
      self.inputView=self.keyboard;
    [self addGestureToKeyboard];

    // Perform custom UI setup here
//    self.nextKeyboardButton = [UIButton buttonWithType:UIButtonTypeSystem];
//    
//    [self.nextKeyboardButton setTitle:NSLocalizedString(@"Next Keyboard", @"Title for 'Next Keyboard' button") forState:UIControlStateNormal];
//    [self.nextKeyboardButton sizeToFit];
//    self.nextKeyboardButton.translatesAutoresizingMaskIntoConstraints = NO;
//    
//    [self.nextKeyboardButton addTarget:self action:@selector(advanceToNextInputMode) forControlEvents:UIControlEventTouchUpInside];
//    
//    [self.view addSubview:self.nextKeyboardButton];
//    
//    [self.nextKeyboardButton.leftAnchor constraintEqualToAnchor:self.view.leftAnchor].active = YES;
//    [self.nextKeyboardButton.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor].active = YES;
}

Las funciones addGestureToKeyboard , pressDeleteKey , keyPressed se definen a continuación

-(void) addGestureToKeyboard
{
    [self.keyboard.deleteKey addTarget:self action:@selector(pressDeleteKey) forControlEvents:UIControlEventTouchUpInside];
    [self.keyboard.globe addTarget:self action:@selector(advanceToNextInputMode) forControlEvents:UIControlEventTouchUpInside];
    
    for (UIButton *key in self.keyboard.keys)
    {
        [key addTarget:self action:@selector(keyPressed:) forControlEvents:UIControlEventTouchUpInside];
    }
    
    
}
-(void) pressDeleteKey
{
    [self.textDocumentProxy deleteBackward];
}

-(void)keyPressed:(UIButton *)key
{
    [self.textDocumentProxy insertText:[key currentTitle]];
}

Ejecute la aplicación principal y vaya a Configuración-> General-> Teclado-> Agregar nuevo teclado-> y agregue el teclado desde la sección de teclado de terceros (el nombre del teclado mostrado sería keyBoardCustom)

El nombre del teclado se puede cambiar agregando una clave llamada Bundle display name y en Value String Value ingrese el nombre deseado para el teclado del Proyecto principal.

introduzca la descripción de la imagen aquí

También puedes ver este video de Youtube.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow