#iphone #ios5
#iPhone #ios5
Вопрос:
В iOS 3 этот обходной путь включал создание пользовательского пользовательского интерфейса и добавление его в качестве вложенного представления на клавиатуру Apple. Когда была выпущена iOS 4, представление, к которому было добавлено вложенное представление, изменилось. Итак, чтобы заставить это работать в iOS3 и 4, у меня было следующее.
-(void) addDoneButtonToNumericKeyboard {
if(doneButtonIsAdded) {
return;
}
if(doneButtonForNumericKeyboard == nil) {
doneButtonForNumericKeyboard= [[UIButton buttonWithType:UIButtonTypeCustom] retain];
doneButtonForNumericKeyboard.frame = CGRectMake(0, 163, 106, 53);
doneButtonForNumericKeyboard.adjustsImageWhenHighlighted = NO;
if ([[[UIDevice currentDevice] systemVersion] hasPrefix:@"3"]) {
[doneButtonForNumericKeyboard setImage:[UIImage imageNamed:@"DoneUp3.png"] forState:UIControlStateNormal];
[doneButtonForNumericKeyboard setImage:[UIImage imageNamed:@"DoneDown3.png"] forState:UIControlStateHighlighted];
} else {
[doneButtonForNumericKeyboard setImage:[UIImage imageNamed:@"DoneUp.png"] forState:UIControlStateNormal];
[doneButtonForNumericKeyboard setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateHighlighted];
}
[doneButtonForNumericKeyboard addTarget:self action:@selector(doneButton:) forControlEvents:UIControlEventTouchUpInside];
}
// locate keyboard view
NSArray *winArray = [[UIApplication sharedApplication] windows];
if(winArray == nil || [winArray count] < 2) {
NSLog(@"No winArray found!");
return;
}
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
NSLog(@"Keyboard description : %@", [keyboard description]);
if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES || [[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES) {
NSLog(@"Attaching done button");
[keyboard addSubview:doneButtonForNumericKeyboard];
doneButtonIsAdded = YES;
}
}
}
У кого-нибудь есть идеи, как заставить это работать на iOS 5?
Ни один из приведенных выше методов не работает для 5. Предпринята попытка добавить вложенное представление, которое кажется успешным, но ничего не отображается. Область просто пуста на экране и не реагирует на прикосновение.
Ответ №1:
Я тоже это заметил, и единственное исправление, которое я смог придумать, — это изменить его с: keyboardWillShow:
на keyboardDidShow:
. Разница между «будет» и «сделал», очевидно, является еще одним обсуждением, но, похоже, это исправлено для моих нужд.
Надеюсь, это поможет.
Еще одна информация о том, что я обнаружил, заключается в том, что [[UIApplication sharedApplication] windows]
первый объект действительно присутствует, но второй объект с индексом 1 исчез. Интересно, что вызвало это.
Спасибо.