Пользовательский iPhone Keyboard

Я не использовал бы таблицы для этого вообще. CSS может легко сделать это.

я сделал бы что-то вроде этого:

   

p { margin: 0px 0px 10px 0px; } input { float: left; width: 50px; } label { margin: 0px 0px 0px 10px; float: left; }

Примечание: Я использовал clearfix класс от: http://www.positioniseverything.net/easyclearing.html

.clearfix:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

.clearfix {display: inline-block;}

/* Hides from IE-mac \*/
* html .clearfix {height: 1%;}
.clearfix {display: block;}
/* End hide from IE-mac */

8
задан swiftBoy 27 December 2012 в 08:31
поделиться

3 ответа

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

[[NSNotificationCenter defaultCenter] addObserver:self 
                                      selector:@selector(modifyKeyboard:)
                                      name:UIKeyboardWillShowNotification
                                      object:nil];

Затем в методе modifyKeyboard :

- (void)modifyKeyboard:(NSNotification *)notification 
{
    UIView *firstResponder = [[[UIApplication sharedApplication] keyWindow] performSelector:@selector(firstResponder)];

    for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows])
        for (UIView *keyboard in [keyboardWindow subviews])
            if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
            {
                MyFancyKeyboardView *customKeyboard = [[MyFancyKeyboardView alloc] initWithFrame: CGRectMake(0, 0, keyboard.frame.size.width, keyboard.frame.size.height);
                [keyboard addSubview: customKeyboard];
                [customKeyboard release];
            }
}

Это добавляет ваше представление поверх исходной клавиатуры, поэтому убедитесь, что вы сделали его непрозрачным.

11
ответ дан 5 December 2019 в 05:56
поделиться

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

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

update на основе вашего комментария это больше похоже на то, что вам просто нужно создать представление с множеством кнопок на нем и перемещать это представление с помощью включена опция анимации. Затем он мог бы скользить снизу вверх, как клавиатура, и снова ускользнуть, если его закрыть.

0
ответ дан 5 December 2019 в 05:56
поделиться

Пока вы не отправляете свое приложение в магазин приложений, вы можете использовать метод, называемый swizzling , для динамической замены методов основных классов во время выполнения. Например:

@interface UIControl(CustomKeyboard)
- (BOOL)__my__becomeFirstResponder
@end

@implementation UIControl(CustomKeyboard)
- (BOOL)__my__becomeFirstResponder
{
    BOOL becameFirstResponder = [self __my__becomeFirstResponder];
    if ([self canBecomeFirstResponder]) {
        [MyKeyboard orderFront];
    }
    return becameFirstResponder;
}

+ (void)initialize
{
    Method old = class_getInstanceMethod(self, @selector(becomeFirstResponder));
    Method new = class_getInstanceMethod(self, @selector(__my__becomeFirstResponder));
    method_exchangeImplementations(old, new);
}
@end

Пожалуйста, не используйте ничего подобного ни в каком производственном коде. Кроме того, я на самом деле не тестировал это, поэтому YMMV.

7
ответ дан 5 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: