2011-01-15 8 views
0

私のアプリにはキーボードが常に表示される画面があります。画面の主な要素はUITextfieldです。データを簡単に入力できるように、キーボードは常に表示されます。ユーザーがデータの入力を終了してGoを押すと、アプリはUIActivityIndi​​catorViewを表示するためにバックグラウンドスレッドで実行される4.5秒のアクションを実行します。iphoneアプリのUITextfieldのキーボードのGoボタンを無効にする

私の問題は、ロジックがバックグラウンドで実行されているので、キーボードの[移動]ボタンがまだ有効として表示されていることです。ユーザーは、Goを再度実行して再度実行する可能性があります。

私は、キーボードが消えるのでnoに編集可能/ userinteractionプロパティを設定することはできませんよ。バックグラウンドスレッドが戻るまで、Goボタンを無効にするか、キーボードをフリーズするだけですか?あなたは明確にすでにUITextFieldDelegateを扱うように設定している

答えて

0

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField; 

をそれ以外の場合、あなたはすでにそれに応じて実行することはできません。バックグラウンドプロセスが実行中でキーボードが閉じられない場合は、その関数からNOを返してください。例:

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { 
    if (alreadyPressedGo) 
    return NO; 
    ... 
} 

しかし、これでGoボタンが無効になるわけではありません。機能を無効にするだけです。

+0

私はこれについて考えました。ユーザーに彼の行動が実行されていると感じることができて良かったでしょうか。彼は混乱して青いボタンを見て、もう一度クリックしようとするかもしれません。アクティビティのインジケータはあるものの、キーボードの近くにはありませんので、逃すのは簡単です。 –

+0

好奇心の邪魔をして、Goを押すとキーボードを一度閉じてしまうのはなぜですか?あなたは使いやすさのために述べました。残念ながら、AppleはUIKeyboardを閉じて、すべての開発者に人間とコンピュータのインタラクションデザインを強制します... – Skyler

+0

キーボードが持続されているとアプリが拒否されると思いますか? –

0

私は(そうでない場合、私はそれをやってみると思いません現時点ではOSのXボックスで)それを試していませんでしたが、あなたは効果的にUIImageViewかを受け取るタッチを置くことによって、それを無効にできなかった場合、私は思ったんだけどその上に似ています。 (あなたは、それに応じてUIImageViewの不透明度を設定して、グレー表示にすることもできます)

これは、図の@Skylerが理想的であるように、ボタンの操作を無効にする組み合わせです。

+0

これはまた良いアイデアです。私は青の上にグレーのボタンを置くことができ、それはストレッチですが、必要なときにだけそれを示すことができます。 –

+0

@coder net - バックグラウンドタスクが処理されている間は、(UIActivityIndi​​catorViewを使って)画面全体を覆い隠すことは、おそらくあまり面倒ではないだろうと考えました。 –

+0

これを簡単に行う方法はありますか?私は、ビューのいくつかの位置にあるUIActivityIndi​​catorコントロール(別のビューではない)を今すぐ持っていることを意味します。全画面表示を有効にした設定があればいいでしょう。 –