Я создаю 2 UITextView
в моей программе. Они должны будут сделать это:
- TextView1 - будет новый InputView
- TextView2 - будет обычная цифровая клавиатура с новой кнопкой
Поскольку цифровая клавиатура iPhone имеет пустую кнопку слева от нуля. Таким образом, я могу поместить туда UIView для имитации новой клавиатуры. Итак, я создал UIView с UIToolbar и этой кнопкой и установил в TextView с простым
[textView setInputAccessoryView:myView];
Поймать клик внутри этого представления немного сложнее. Я должен создать подкласс principalClassName
в main.m
int retVal = UIApplicationMain(argc, argv, MyPrincialClass ,MyDelegateClass);
Затем создайте этот класс с помощью
@interface MyPrincialClass : UIApplication
- (void)sendEvent:(UIEvent *)anEvent;
@end
@implementation MyPrincialClass
- (void)sendEvent:(UIEvent *)event {
[super sendEvent:event];
NSSet *touches = [event allTouches];
UITouch *touch = touches.anyObject;
[[NSNotificationCenter defaultCenter] postNotificationName:@"click" object:(id)touch];
}
@end
Теперь только прослушайте это Уведомление и проверьте, находится ли этот щелчок в правильной области.
Поскольку у меня есть UINavegationBar, я должен перейти к «Далее» и «Предыдущему» TextView. ОК, это только запуск
[textView1 resignFirstResponder];
[textView2 becomeFirstResponder];
Если все textView имеют один и тот же inputView (клавиатура), чем кнопка, то они работают нормально. Но ... Потому что один из этого textView имеет другой inputView, чем моя проблема запуска.
Если я сначала нажму в обычном UITextView с помощью кнопки, то кнопка будет отображаться правильно, как это. Красный квадрат находится над клавиатурой, поэтому он работает.
Если первый щелчок находится в UITextView с настроенным видом ввода, кнопка снова отображается правильно
но сейчас, если navegate с панелью инструментов (с простым resignFirstResponder
и becomeFirstResponder
), кнопка будет отображаться под клавиатурой
В резюме ... Вся проблема только в том, что я использую пользовательское представление ввода. Если я использую только клавиатуру, у меня не будет никаких проблем.
Чтобы решить эту проблему, просто поместите пользовательскую кнопку UIView над клавиатурой. Я пытаюсь получить основной UIWindows и отправить сообщение:
[[UIApplication sharedApplication].keyWindow bringSubviewToFront:myview];
Но не работа. Любая идея, чтобы решить эту ошибку ??