1

私はどこでも探してきました...これはよくある質問だと思うので、正しい検索語を使用していない可能性があります。

ユーザーがキーボードを下げるボタンをクリックしてキーボードを閉じたときに処理できるイベントはありますか。

赤くマークされたボタン

uitextfield が firstresponder になったときにビューを上に移動しますが、このボタンがタップされたときにもう一度下に移動したい

4

3 に答える 3

1

通知を使用してみてください。それをあなたに追加してくださいviewDidLoad

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

次に、というメソッドを作成しますkeyboardWillHide

- (void)keyboardWillHide:(NSNotification *)notification {
  //do whatever you need
}

それが役に立てば幸い

于 2012-05-09T09:37:41.923 に答える
0

NSNotificationCenterを使用すると、キーボードイベントを取得できます。viewWillAppearでキーボードイベントに登録でき、viewWillDisapperで登録を解除することを忘れないでください。
ここでは2つの通知を使用します。

  1. UIKeyboardDidShowNotificationアップルドキュメント
  2. UIKeyboardDidHideNotificationアップルドキュメント

    あなたはこのようなことをすることができます:

    • (void)viewWillAppear:(BOOL)animated {
      [super viewWillAppear:animated];
      NSLog(@ "キーボードイベントの登録");

    //イベントに登録します
    [[NSNotificationCenterdefaultCenter]addObserver:selfセレクター:@selector(keyboardDidShow :) name:UIKeyboardDidShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:selfセレクター:@selector(keyboardDidHide :)名前:UIKeyboardDidHideNotificationオブジェクト:nil];

    //コンテンツサイズを設定scrollview.contentSize=CGSizeMake(SCROLLVIEW_CONTENT_WIDTH、SCROLLVIEW_CONTENT_HEIGHT); //たとえば(320,460)

    //最初はキーボードは非表示ですkeyboardVisible=NO; //in.h宣言BOOLkeyboardVisible; }

-(void)viewWillDisappear:(BOOL)animated {
NSLog(@ "キーボードイベントの登録解除");
[[NSNotificationCenter defaultCenter] removeObserver:self];
}

-(void)keyboardDidShow:(NSNotification *)notif {
NSLog(@ "Keyboard is visible");
//キーボードが表示されている場合は、
if(keyboardVisible){
NSLog(@ "キーボードは既に表示されています。通知を無視します。");を返します。
戻る;
}

// Get the size of the keyboard.
NSDictionary* info = [notif userInfo];
NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
CGSize keyboardSize = [aValue CGRectValue].size;

// Save the current location so we can restore
// when keyboard is dismissed
offset = scrollview.contentOffset; //in .h declare CGPoint offset and UIScrollView *scrollview.;

// Resize the scroll view to make room for the keyboard
CGRect viewFrame = scrollview.frame;
viewFrame.size.height -= keyboardSize.height;
scrollview.frame = viewFrame;

CGRect textFieldRect = [activeField frame];//in .h UITextField *activeField;
textFieldRect.origin.y += 10;
[scrollview scrollRectToVisible:textFieldRect animated:YES];    

// Keyboard is now visible
keyboardVisible = YES;

}

-(void)keyboardDidHide:(NSNotification *)notif {
//キーボードはすでに表示されています
かif(!keyboardVisible){
NSLog(@ "キーボードはすでに非表示になっています。通知を無視します。");
戻る;
}

// Reset the frame scroll view to its original value  
scrollview.frame = CGRectMake(0, 0, SCROLLVIEW_CONTENT_WIDTH, SCROLLVIEW_CONTENT_HEIGHT);  

// Reset the scrollview to previous location
scrollview.contentOffset = offset;

// Keyboard is no longer visible
keyboardVisible = NO;

}

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
YESを返します。
}
希望はあなたを助けるでしょう:)

于 2012-05-09T11:06:27.760 に答える
0

「キーボードの管理」セクションの2番目の段落を確認してください:http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UITextField_Class/Reference/UITextField.html

于 2012-05-09T09:26:33.633 に答える