2012-05-04 3 views
7

Ну, я прочитал некоторые достойные очки, прежде чем публиковать этот вопрос, но не смог найти правильные ответы. Я не могу объяснить весь сценарий приложения здесь, потому что это немного сложно объяснить. Итак, позвольте мне сделать этот вопрос очень простым. Как я могу изменить рамку UIKeyBoard .i.e. Я хочу, чтобы UIKeyBoard вращался или переводил на 90 градусов вверх для поддержки позиции моего взгляда. Есть ли выход для меня?Как изменить раму UIKeyBoard программно в iOS

+0

В ios5 эта вещь доступна.check в wwdc2011. – vishiphone

+0

im должен поддерживать все устройства с ios 4.2 и выше :( –

+0

Но я думаю, что это сложнее Buddy, я не знаю об этом извините. – vishiphone

ответ

4

Вы не можете изменить клавиатуру по умолчанию. Однако вы можете создать пользовательский UIView для использования в качестве замены клавиатуры, установив его как inputView, например, UITextField.

При создании пользовательской клавиатуры требуется немного времени, она хорошо работает со старыми версиями iOS (inputView на UITextField доступна в iOS 3.2 и более поздних версиях) и поддерживает физические клавиатуры (клавиатура автоматически скрывается, если она подключена) ,

Вот некоторые примеры кода для создания вертикальной клавиатуры:

Интерфейс:

#import <UIKit/UIKit.h> 

@interface CustomKeyboardView : UIView 

@property (nonatomic, strong) UIView *innerInputView; 
@property (nonatomic, strong) UIView *underlayingView; 

- (id)initForUnderlayingView:(UIView*)underlayingView; 

@end 

Реализация:

#import "CustomKeyboardView.h" 

@implementation CustomKeyboardView 

@synthesize innerInputView=_innerInputView; 
@synthesize underlayingView=_underlayingView; 

- (id)initForUnderlayingView:(UIView*)underlayingView 
{ 
    // Init a CustomKeyboardView with the size of the underlying view 
    // You might want to set an autoresizingMask on the innerInputView. 
    self = [super initWithFrame:underlayingView.bounds]; 
    if (self) 
    { 
     self.underlayingView = underlayingView; 

     // Create the UIView that will contain the actual keyboard 
     self.innerInputView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, underlayingView.bounds.size.height)]; 

     // You would need to add your custom buttons to this view; for this example, it's just red 
     self.innerInputView.backgroundColor = [UIColor redColor]; 

     [self addSubview:self.innerInputView]; 
    } 
    return self; 
} 

-(id)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    // A hitTest is executed whenever the user touches this UIView or any of its subviews. 

    id hitTest = [super hitTest:point withEvent:event]; 

    // Since we want to ignore any clicks on the "transparent" part (this view), we execute another hitTest on the underlying view. 
    if (hitTest == self) 
    { 
     return [self.underlayingView hitTest:point withEvent:nil]; 
    } 

    return hitTest; 
} 

@end 

Использование пользовательской клавиатуры в некоторых UIViewController:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    CustomKeyboardView *customKeyboard = [[CustomKeyboardView alloc] initForUnderlayingView:self.view]; 
    textField.inputView = customKeyboard; 
} 
+0

Звучит классно .. Позвольте мне попробовать ... BTW +1 :) –

Смежные вопросы