2012-04-07 17 views
2

ビューAには、テキストフィールドがあります。私は新しいビューコントローラを押すためにコントロールをタップするB.ビューBは、フレームをキーボードに合わせて調整するテキストビューを持っているだけで、常に最初のレスポンダになるようにテキストビューを設定し、ビューBがプッシュインされます。キーボードが既に表示されている場合、キーボードの表示/非表示に応じて表示のサイズを変更する方法

ビューコントローラBでは、通常のキーボード通知処理を行います。ビューBが押される前にキーボードが表示されていない場合は問題ありません。ただし、ビューAのテキストフィールドが最初のレスポンダであり、ビューコントローラBを押したときにキーボードが既に表示されている場合、UIKeyboardWillShowNotification/UIKeyboardDidShowNotificationは受信されません。このような状況に対処するための提案はありますか?

+1

Ipadアプリですか? PageSheetスタイルを表示していますか? – tangqiaoboy

+0

あなたはUITextfieldDelegateを試してみませんか、UITextViewDelegateが役立つかもしれません。 – Leena

答えて

0

最初のレスポンダを辞任して再び最初のレスポンダになることは、私が最初に考えたときにすぐに落とした良い解決策ではありません。キーボードがすでに存在しているときに、キーボードを非表示にしてすぐに再び表示させることは、適切なことではありません。それは無駄であり、円滑な移行を破ります。

Bのカプセル化を解除してキーボードのステータスをビューAからビューBに送信することは、ソフトウェアエンジニアリングでは受け入れられないことです。

だから私はバグレポートが必要だと信じて、1つ行った - #11205521

1

私は以前この問題に遭遇していませんでしたが、私は提案があります。多分ビューBで、あなたのtextView resignFirstResponderとその後becomeFirstResponderにキーボードの通知が出るようにすることができます。以下のサンプルは:

[textView resignFirstResponder]; 
[textView becomeFirstResponder]; 

そしてそこに多分あなたはビューAでresignFirstResponderできるプッシュする前に、道の周りの他の散歩で、その後、becomeFirstResponderビューB後viewDidAppearです。

希望します。

0

キーボードステータス情報をviewController Bに渡すことができます。これは良い方法ではありませんが、viewController AのviewWillDisappearで[textView resignFirstResponder]を呼び出すようないくつかの方法を試しましたが、作業。

0

UITouchを試してください。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    // Detect touch anywhere 
    UITouch *touch = [touches anyObject]; 

    // Get the point that was touched 
    CGPoint point = [touch locationInView:self.view]; 
    NSLog(@"pointx: %f pointy:%f", point.x, point.y); 

    // Check if the point touched is within these rectangular bounds 
    if (CGRectContainsPoint(CGRectMake(5, 5, 40, 130), point)) 
    { 
    //do something... 
    } 
} 
0

こんにちは、私はこのことができます。この

- (void) animateView: (BOOL) up 
{ 
    CGRect rect = self.view.frame; 

    if(up) 
    { 
     float movement = (up ? 264 : 416); 
     rect.size.height = movement; 
     self.view.frame = rect; 
    } 
    else 
    { 
     rect.size.height = 480; 
     self.view.frame = rect; 
    } 
} 
BOOL変数までは、キーボードが示されているかどうかを示すために使用される

希望のようなものを使用し、キーボードに応じてビューのサイズを変更するには!

に関して、 ホルヘ

0

あなたはappDelegateのように、あなたのアプリケーションでいくつかの中心的な場所でキーボードの状態を監視し、すべてのコンポーネントが、そこから現在のキーボードの情報を得る可能性があります。

関連する問題