Я не использовал бы таблицы для этого вообще. 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 */
Вот идея: измените существующую клавиатуру в соответствии со своими потребностями. Сначала зарегистрируйтесь, чтобы получать уведомления, когда они появляются на экране:
[[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];
}
}
Это добавляет ваше представление поверх исходной клавиатуры, поэтому убедитесь, что вы сделали его непрозрачным.
Это зависит от того, насколько индивидуально вы этого хотите. Я лично хотел использовать только цифровую клавиатуру, но мне не нравилась цифровая клавиатура, поэтому я использовал стандартную клавиатуру и добавил стандартный фильтр, который является частью опций, который отклоняет все нажатия клавиш, кроме цифр или пробелов. или удалить.
Я не могу сказать, понравится ли это Apple, и вам будет очень сложно написать свое собственное поведение, которое будет действовать как другие клавиатуры. Настолько, что это следует признать плохой идеей.
update на основе вашего комментария это больше похоже на то, что вам просто нужно создать представление с множеством кнопок на нем и перемещать это представление с помощью включена опция анимации. Затем он мог бы скользить снизу вверх, как клавиатура, и снова ускользнуть, если его закрыть.
Пока вы не отправляете свое приложение в магазин приложений, вы можете использовать метод, называемый 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.