11

私は十分な調査を行いましたが、私の質問に対する答えを見つけることができませんでした。

いくつwebViewかのテキスト フィールドがあるとします。そのうちのいくつかは画面の下部に配置されているため、キーボードが表示されたときにそのフィールドを非表示にする必要があります。キーボードが表示された後webView、そのフィールドを表示するためにコンテンツが上にスライドします。問題は、コンテンツをスライドさせたくないということです。

質問: のその機能を無効にする方法webview、または何らかの方法でコンテンツが上にスクロールしないようにするにはどうすればよいですか????

ありがとう、助けていただければ幸いです。

4

4 に答える 4

20

フォーム フィールド間を移動するときの自動スクロールを含め、すべてのスクロールを無効にしたい場合、設定webView.scrollView.scrollEnabled=NOがすべてをカバーするわけではありません。これにより、通常のタップ アンド ドラッグ スクロールは停止しますが、Web フォーム内を移動するときの自動フィールド イントゥ ビュー スクロールは停止しません。

また、 を監視すると、キーボードが表示されたときにUIKeyboardWillShowNotificationスクロールを防ぐことができますが、別のフォーム フィールドを編集するためにキーボードが既に起動している場合は何もしません。

3 つの簡単な手順ですべてのスクロールを防止する方法を次に示します。

1) UIWebView を作成したら、通常のスクロールを無効にします。

myWebView.scrollView.scrollEnabled = NO;

2) 次に、ビュー コントローラーを scrollView のデリゲートとして登録します。

myWebView.scrollView.delegate = self;

(そして、コンパイラの警告を防ぐために、必ず<UIScrollViewDelegate>クラスの定義に追加してください)@interface

3) すべてのスクロール イベントをキャプチャして元に戻します。

// UIScrollViewDelegate method
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    scrollView.bounds = myWebView.bounds;
}
于 2013-09-06T23:44:38.410 に答える
0

私は私のための解決策を見つけました。上にスクロールした後、もう一度下にスクロールします。UIKeyboardWillShowNotificationまず、オブザーバーを追加して 通知をキャッチし、[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; 次にメソッドを実装します。

-(void)keyboardWillShow:(NSNotification*)aNotification{
NSDictionary* info = [aNotification userInfo];
float kbHeight = [[NSNumber numberWithFloat:[[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size.height]floatValue];
float kbWidth = [[NSNumber numberWithFloat:[[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size.width]floatValue];
BOOL keyboardIsVisible=[self UIKeyboardIsVisible];
//Check orientation and scroll down webview content by keyboard size
if(kbWidth==[UIScreen mainScreen].bounds.size.width){
    if (!keyboardIsVisible) {
        [[chatView scrollView] setContentOffset:CGPointMake(0, -kbHeight+10) animated:YES];
    } //If is landscape content scroll up is about 113 px so need to scroll down by 113
}else if (kbHeight==[UIScreen mainScreen].bounds.size.height){
    if (!keyboardIsVisible) {
        [[chatView scrollView] setContentOffset:CGPointMake(0, -113) animated:YES];
    }
}
}

これは私が正確に尋ねたものではありませんが、私の問題を解決するのに役立ちました.

ありがとう。

于 2013-04-25T09:08:27.477 に答える
0

このクラスはあなたの問題に役立つはずだと思います。コンテンツを上にスクロールするため、画面の下部にテキストフィールドがある場合は、キーボードの上に移動します。

于 2013-04-10T13:03:58.327 に答える