Пользовательская клавиатура iPad, которая выглядит как клавиатура системы - PullRequest
6 голосов
/ 04 августа 2010

Я ищу не хакерское решение для этого, поэтому в основном -inputView.Часть, в которой я не уверен, заключается в том, как сделать так, чтобы она выглядела как обычные клавиатуры, от фона до клавиш.Я понимаю, что могу фотошопить клавиатуру Apple, но это выглядит немного хакерски, особенно если Apple (вероятно, нет, но все еще возможно) решает изменить внешний вид своих клавиатур.Я знаю, что Numbers отлично поработали над созданием дополнительных клавиатур, которые выглядят как стандартные системные, и я хотел бы сделать это так (хотя, очевидно, у них есть доступ к тем же ресурсам, которые сделали системные клавиатуры, включая возможные частные платформы,и т.д.)

Ответы [ 2 ]

2 голосов
/ 03 июня 2011

Я использовал следующее:

tenDigitKeyboard.m

-(IBAction)pressedKey:(UIButton *)sender
{
    [delegate pressedKey:sender.tag];
}

, где делегат определяется как `делегат id;

, затем в делегате я делаю ...

-(void)pressedKey:(NSInteger)key
{
    NSString * bufferString = model.string;
    if (key == -1) {//delete
        model.string = [bufferString substringWithRange:NSMakeRange(0, [bufferString length]-1)];
    }else{
     //will need to change the following to lookup key value based on a lookup of the button.tag
        model.string = [bufferString stringByAppendingFormat:@"%i",key];
    }
    [self update];//updates the view
}

Я получил изображение кнопки клавиатуры от: http://www.teehanlax.com/blog/iphone-gui-psd-v4/

0 голосов
/ 13 сентября 2010

Создать контроллер представления и XIB. Xib должен иметь 1-9,0 и удалять кнопки, связанные с IBOutlets в вашем контроллере. Сохраните и сохраните строку возвращаемого значения в качестве свойства. Вы можете добавить десятичные дроби и т. Д., Если хотите. В заголовке сохраните закрытие блока издания со свойством (или, альтернативно, создайте делегат или используйте уведомление).

@property (copy) void(^valueChangedBlock)(NSString* string);

При касании каждая кнопка отправляет событие такому методу:

- (IBAction) pressKey:(id)sender
{
    NSString *toAppend;

    // Instead of this switch you can store the values in a dictionary mapped by sender.
    switch(sender)
    {
        case oneButton: toAppend=@"1"; break;
        case twoButton: toAppend=@"2"; break;
        ...
    }

    returnValue = [returnValue appendString:toAppend];
    valueChanged(returnValue);
}

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

...