GoogleとSOを使用した長い検索の後、私は同様の問題を発見しませんでした。いくつかは近づいたが、私のようなものではなかった。マルチタスキング時にツールバーがアニメーション表示されます
問題が発生しました: 私のアプリ(WKWebViewベース)では、キーボードが表示され、自宅をダブルタップしてキーボードが表示されている別のアプリに切り替えると、アプリのキーボードは表示されません。問題ない。だから私は再びマルチタスキング、それは私のアプリのスナップショットでは、キーボードがなくなっているが、私はそれの上にあるカスタムツールバーは、以下のキーボードと場所に残っているようだ。私は私のアプリをタップし、それはアニメーションをして、画面の下部に戻る。
私が試したこと: 私は[self.view endEditing:YES]、resigningFirstResponderとキーボードを閉じるためのすべてのメソッドについて知っています。 viewWillDisappear、applicationWillResignActive、およびapplicationDidEnterBackgroundを配置して混合しようとしました。いずれも私のツールバーの問題を処理しません。
これは、ツールバーを表示したままで、キーボードのアニメーションを画面に表示したり消したりする方法です。
- (void)keyboardWillShow:(NSNotification*)notification
{
NSDictionary* info = [notification userInfo];
NSNumber *durationValue = info[UIKeyboardAnimationDurationUserInfoKey];
NSNumber *curveValue = info[UIKeyboardAnimationCurveUserInfoKey];
NSValue *endFrame = info[UIKeyboardFrameEndUserInfoKey];
[UIView animateWithDuration:durationValue.doubleValue
delay:0
options:(curveValue.intValue << 16)
animations:^{
self.toolBar.frame = CGRectMake(0,
[endFrame CGRectValue].origin.y - self.toolBar.bounds.size.height+44,
self.toolBar.bounds.size.width,
self.toolBar.bounds.size.height);
}
completion:nil];
}
- (void)keyboardWillHide:(NSNotification*)notification
{
NSDictionary* info = [notification userInfo];
NSNumber *durationValue = info[UIKeyboardAnimationDurationUserInfoKey];
NSNumber *curveValue = info[UIKeyboardAnimationCurveUserInfoKey];
NSValue *endFrame = info[UIKeyboardFrameEndUserInfoKey];
[UIView animateWithDuration:durationValue.doubleValue
delay:0
options:(curveValue.intValue << 16)
animations:^{
self.toolBar.frame = CGRectMake(0,
[endFrame CGRectValue].origin.y - self.toolBar.bounds.size.height,
self.toolBar.bounds.size.width,
self.toolBar.bounds.size.height);
}
completion:nil];
}
誰かが手がかりや考えを持っていますか?
もう一度私のアプリはWKWebViewベースであるため、直接呼び出すかtextviewsに向けて、webviewに集中しようとすると無意味です。
誰かがもっとコードを必要とする場合は、私に知らせてください。 ご協力いただければ幸いです。ありがとうございました。
だからここ1/20/18
更新はどこで、どのように私のツールバーが初期化され、ロードされるに関連する要求されたコードです。
h。
UIToolbar *toolBar;
@property (nonatomic, strong) UIToolbar *toolBar;
m。それについてです
@synthesize toolBar;
- (void)viewDidLoad {
//Toolbar setup
CGRect toolFrame, remain;
CGRectDivide(self.view.bounds, &toolFrame, &remain, 48, CGRectMaxYEdge);
self.toolBar = [[UIToolbar alloc] initWithFrame:toolFrame];
[self.toolBar setBarStyle:UIBarStyleBlackTranslucent];
[self.toolBar setClipsToBounds:YES];
[self.toolBar setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin];
[self.view addSubview:self.toolBar];
}
、その後、いくつかのコードは、私がボタンを切り替えるときにそれを更新するために呼び出す他、他には何もこのツールバーに縛られていません。
スイッチをタップしたり、ユーザーがバックグラウンドを変更したときにリフレッシュする必要がない限り、これは呼び出されません。別のビューでNSUserDefaultsを使用します。
-(void)viewWillLayoutSubviews{
[self.currentScrollView layoutIfNeeded];
[self.toolBar layoutIfNeeded];
[self.view layoutSubviews];
}
これは私のアプリに依然として永続的な問題です。 – ChrisOSX
ツールバーはどこで作成しましたか? – ChikabuZ
アプリが読み込まれると、メインビュー(viewDidLoad)で作成されます。私はそれをhファイルでプロパティで作成し、mファイルで合成してサブビューに追加しました。 – ChrisOSX