Удалите клавишу Dismiss с клавиатуры UITextView на iPad.

У меня есть модальное представление с UITextView, и пользователь может ввести текст (или нет) и закрыть модальное представление. Нет смысла скрывать клавиатуру, так как она не скрывает модальное представление (это сделано специально), а UITextView без клавиатуры просто выглядит глупо.

Есть ли способ скрыть или удалить клавишу «Отключить клавиатуру» с клавиатуры?


person Fastas    schedule 11.05.2011    source источник
comment
Не уверен, что это хорошая идея. Возможно, пользователь хочет отключить клавиатуру, чтобы найти что-то, что она скрывает.   -  person onnoweb    schedule 11.05.2011
comment
@onnoweb клавиатура ничего не закрывает, так устроен модальный вид. В этом случае действительно бесполезно убирать клавиатуру...   -  person Fastas    schedule 11.05.2011


Ответы (2)


Вы не можете скрыть или удалить ключ, но можете отключить его с помощью протокола UITextViewDelegate:

- (BOOL)textViewShouldEndEditing:(UITextView *)textView {

    return NO;
}

Если UIKit заставляет респондента уйти в отставку, несмотря на делегата (сомнительно, но я не смотрел внимательно на стек вызовов), вы можете заставить клавиатуру оставаться в рабочем состоянии, наблюдая за UIKeyboardDidHideNotification и возвращая первому респонденту UITextView: [myUITextView becomeFirstResponder]

person memmons    schedule 11.05.2011
comment
ОК, это лучший вариант, если нет возможности удалить его. могу ли я изменить внешний вид? может быть, немного уменьшить непрозрачность, чтобы он выглядел отключенным? - person Fastas; 12.05.2011
comment
Если вы действительно хотите удалить его, вы можете создать пользовательскую клавиатуру, которая имитирует стандартную, но без клавиши закрытия клавиатуры. Посмотрите документацию по свойству inputView. Слово предупреждения, однако, это не очень практично, поскольку это по существу делает невозможным локализацию клавиатуры. - person memmons; 12.05.2011
comment
С другой стороны, я видел некоторые хаки, которые переводят UIKeyboard в UIView и просматривают иерархию, пока не найдут нужный им ключ и не заменят его чем-то другим. Этот пост на форуме разработчиков Apple рассказывает об этом devforums.apple.com/thread/22301 - person memmons; 12.05.2011

Метод протокола не помогает. Как предложил Answerbot, следует слушать уведомления клавиатуры.

   - (void)onIpadViewWillAppear
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showIpadKeyboard) name:UIKeyboardDidHideNotification object:nil];
}

- (void)onIpadViewWillDisappear
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)showIpadKeyboard
{
    [myTextField becomeFirstResponder];
}

Это работает и выглядит красиво.

person Vladimir Shutyuk    schedule 20.07.2013