Я использую трюк, чтобы поместить пользовательскую кнопку для цифровой клавиатуры.Кнопка не удалена с удаленнымFromSuperVire
Но я не могу удалить кнопку после ее использования, поэтому на обычной клавиатуре появляются сверху.
Это, как я добавить его:
- (void)keyboardShow:(NSValue *)v
{
if (isKeyboardNumeric) {
// create custom button
UIButton *doneButton = [[UIButton alloc] init];
//doneButton.buttonType = UIButtonTypeCustom;
doneButton.frame = CGRectMake(0, 163, 106, 53);
doneButton.adjustsImageWhenHighlighted = NO;
if ([[[UIDevice currentDevice] systemVersion] hasPrefix:@"3"]) {
[doneButton setImage:[UIImage imageNamed:@"DoneUp3.png"] forState:UIControlStateNormal];
[doneButton setImage:[UIImage imageNamed:@"DoneDown3.png"] forState:UIControlStateHighlighted];
} else {
[doneButton setImage:[UIImage imageNamed:@"DoneUp.png"] forState:UIControlStateNormal];
[doneButton setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateHighlighted];
}
[doneButton addTarget:self action:@selector(dismissKeyboard:) forControlEvents:UIControlEventTouchUpInside];
doneButton.tag = 99;
// locate keyboard view
UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
UIView* keyboard;
for(int i=0; i<[tempWindow.subviews count]; i++) {
keyboard = [tempWindow.subviews objectAtIndex:i];
// keyboard view found; add the custom button to it
if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
[keyboard addSubview:doneButton];
}
}
}
И это, как я удалить его:
- (void)keyboardHide
{
UIView *btn;
UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
UIView* keyboard;
for(int i=0; i<[tempWindow.subviews count]; i++) {
keyboard = [tempWindow.subviews objectAtIndex:i];
// keyboard view found; add the custom button to it
if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) {
for (btn in keyboard.subviews) {
if (btn.tag==99) {
[btn removeFromSuperview];
[btn release];
break;
}
}
}
}
[self setupButtons];
}
Оба метода вызываются правильно, и в отладчике я подтверждаю, что называется
[btn removeFromSuperview]
Но в любом случае кнопка остается.
Я пытаюсь поместить код, чтобы удалить его непосредственно перед вызовом if (isKeyboardNumeric)
, но ничего.
Хорошо, это справедливо. Я изменяю способ работы пользовательского интерфейса и удаляю хак для использования панели инструментов на верхней панели клавиатуры и использования этого представления. Я помещал кнопки в окно навигации. Я надеюсь, что бета-плеер понравится больше;) – mamcx