0

ランドスケープ ビューに UITextField があり、UIKeyboard ビューの右下にある [キーボードを閉じる] ボタンを押しても、キーボードが消えません。このキーが押されたときにプログラムでリッスンする方法はありますか? または、このキーボードがなくなる原因となる、私が見ていない接続がありますか? これは iOS 4 と XCode 4 です。ありがとう。

4

3 に答える 3

2

今日も同じ問題があり、Apple の KeyboardAccessory サンプル コードで機能するのだろうかと思いました。そこでリバースエンジニアリングを行いました。ViewController は、私の場合の間違いではありませんでした。

UIApplicationDelegate の実装には、ルート ビューコントローラーとウィンドウがセットアップされるアプリケーションのエントリ ポイントがあります- (void) applicationDidFinishLaunching:(UIApplication *)application。ルート ビューコントローラー ビューをウィンドウにサブビューとして追加するのを忘れた場合、dismiss-keyboard-button はアプリのどのビューでも機能しません。

@class ViewController;

@interface KeyboardAccessoryAppDelegate : NSObject <UIApplicationDelegate> {
  UIWindow *window;
  ViewController *viewController;
}

  @property (nonatomic, retain) IBOutlet UIWindow *window;
  @property (nonatomic, retain) IBOutlet ViewController *viewController;

@end

...

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

  [window addSubview:viewController.view];
  [window makeKeyAndVisible];
}

メインの xib ファイルでアウトレットを設定することを忘れないでください。

これがキーボードの動作に関連している理由がわかりません。しかし、私の理論では、レスポンダーチェーンはウィンドウにリンクされていませんが、必要です。

于 2011-10-02T19:55:55.783 に答える
0

キーボード入力を受け入れるテキスト フィールドに、ファーストレスポンダではなくなるように指示する必要があります。

[UITextField resignFirstRepsonder];
于 2011-05-28T00:40:26.450 に答える
0

キーボードを閉じるボタンを使用してキーボードを閉じるには、デリゲート メソッドを実装する必要があります。

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    //Check if your text field is first responder, and if it is, have it resign
}

または、キーボードの外側をタップしてキーボードを閉じたい場合は、

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    for (UIView* view in self.view.subviews)
    {
        if ([view isKindOfClass:[UITextField class]]) {
            [view resignFirstResponder];
        }

        if ([view isKindOfClass:[UITextView class]]) {
            [view resignFirstResponder];
        }
    }
}
于 2011-06-02T22:51:54.520 に答える