2010-01-27 4 views
2

Я пишу приложение с UITextView, которое позволяет редактировать. Когда пользователь сначала касается UITextView, появляется клавиатура, и я хочу отменить эту клавиатуру, когда пользователь снова коснется UITextView, например. Я ввел некоторые данные в текстовое окно и с клавиатурой, все еще показывающей на экране, я нажимаю на UITextView, который должен привести к отмене клавиатуры.Как убрать клавиатуру при касании UITextView, когда клавиатура уже установлена?

Есть ли способ достичь этого?

(я знаю предоставление сделать кнопку и сделать это, но я хочу для того чтобы достигнуть этого, нажав на самой UITextView)

ответ

2

Как в стороне, я бы настоятельно рекомендовал вам не использовать элементы состояния переключения на iPhone. Это просто для двойного использования в реальном мире. Вот почему все приложения Apple используют либо клавишу «возврат» на клавиатуре, либо кнопку «Готово».

В интерфейсе, который вы рассматриваете, пользователи будут закрываться, а затем случайно открывать клавиатуру примерно в 10% случаев или более. Это заставит ваше приложение выглядеть громоздким и шелушащимся.

+0

Хотя я согласен, я не вижу, как это ответ на * актуальный вопрос (с точки зрения «как»). – jensgram

+0

Ну, я думал, вы ответили «как», и я немного интерфейс наци. Я думаю, что иногда «Ты не хочешь этого делать» - лучший ответ на вопрос «как мне это сделать». – TechZen

+0

Хорошо :) Я по-прежнему согласен с вами в обобщенной точке зрения (и * вы * не выбрали ответ, чтобы принять), но в духе SO, являющегося программированием Q & A, я не нахожу «Вы не хотите сделать это «адекватным». – jensgram

1

Вы должны позвонить resignFirstResponder для UITextView. Скажем, у вас есть IBOutlet для представления текста:

@property (nonatomic, retain) IBOutlet UITextView *comment; 

Тогда [comment resignFirstResponder]; может быть вызван из touchesBegan или тому подобное.

См., Например, How to Dismiss the Keyboard when using a UITextView.

1

Что вы ищете - это большой прозрачный uibutton "overlapButton", который всегда остается на вершине uitextview.

Когда появляется текстовое изображение, вы устанавливаете кнопку скрытой, чтобы свободно использовать текстовое изображение.

[overlapButton setHidden:YES]; 

При сливе TextView, клавиатура будет и следующий метод внутри TextView делегата будет вызван:

-(BOOL)textViewShouldBeginEditing:(UITextView *)textView{ 
    [overlapButton setHidden:NO]; 
} 

Здесь вам нужно установить видимый «overlapButton» так что время клавиатура вставлена, вы можете коснуться кнопки, которая теперь перекрывает текст. О действии кнопки, вы можете скрыть клавиатуру:

-(IBAction) overlapButtonTapped{ 
    [myTextView resignFirstResponder]; 
} 

После отставки первого ответчика, следующий метод будет вызван:

-(BOOL)textViewShouldEndEditing:(UITextView *)textView{ 
    [overlapButton setHidden:YES]; 
} 

После установки скрытых свойств соответственно для кнопки (например, выше), у вас есть «четкое» текстовое изображение, которое вы можете снова нажать, чтобы показать клавиатуру .. и т. д. и т. д.

Cheers.

+0

, но таким образом невозможно написать в uitextview, не так ли? – Sefran2

0

Я согласен с вами TechZen. Я видел это! Я бы тоже не советовал это! Это также делает редактирование очень трудным, если не невозможным для жестов редактирования/копирования/вставки. С другой стороны, если человек все еще хочет этого плохо ...: P код, предоставленный мной в моем другом сообщении, работает с удовольствием! Приветствия.

Смежные вопросы