Ich lade ein UIWebView in einem modalen. Die Webseite hat einige Eingaben, die in iOS 5 genau wie vorgesehen funktionieren. Wenn jedoch in iOS 6 ein Eingang scharfgestellt wird, zentriert die Tastatur automatisch das Formular, obwohl die Eingänge genügend Platz haben, um darüber angezeigt zu werden die Tastatur. Da sich einige der Eingaben oben auf der Seite befinden, sind sie nicht sichtbar, sodass der Benutzer nicht sehen kann, was er eingibt. Wenn Sie nach oben blättern, um die Eingaben zu sehen, wird die Tastatur nicht mehr funktionieren, bis Sie sie ablehnen und die Eingabe neu fokussieren (und sie anschließend erneut aus der Ansicht scrollen). Ist das ein erwartetes Verhalten in iOS 6? Gibt es eine Möglichkeit, die Webansicht vom Scrollen abzuhalten, wenn eine Eingabe den Fokus erhält (wie funktioniert iOS 5)?UIWebView Scrollen nach unten auf Eingabefokus iOS 6 nur
Antwort
Ohne die inneren Abläufe Ihres Codes zu kennen, werde ich versuchen, so viel wie möglich zu helfen. Nicht zuletzt hoffe ich, etwas zum Nachdenken zu liefern. Sie haben zwei Fragen gestellt:
Ist das Verhalten in iOS6 erwartet?
Was Sie sehen, ist ziemlich merkwürdig. Es ist seltsam, dass das webView das Formular zentriert und nicht das Eingabefeld zentriert. Und es sollte auf keinen Fall dazu führen, dass das aktive Eingabefeld nicht sichtbar ist. Außerdem scheint die Tastatur zu funktionieren, was ziemlich merkwürdig ist. Es wird jedoch erwartet, dass sich das Verhalten von iOS 5 und 6 in Bezug auf das WebView-Scrollen unterscheidet. Wie du schon sagtest, scrollt iOS 5 das InputField in die Ansicht, während iOS6 es in die Mitte stellt.
Gibt es eine Möglichkeit, die Webansicht vom Scrollen abzuhalten, wenn eine Eingabe den Fokus erhält (wie funktioniert iOS 5)?
Ja. Ich stelle Code zur Verfügung, um genau das unten zu tun - nämlich, um das webView vom Scrollen zu stoppen. Wenn das genau das ist, was du machen willst, dann großartig. Es ist jedoch nicht dasselbe, das WebView vom Scrollen abzuhalten, als ob man das gleiche Verhalten wie iOS5 hätte. Trotzdem wollte ich dir diese Option geben, wie du es verlangst.
#import "ViewController.h"
@interface ViewController() <UIScrollViewDelegate> {
CGPoint origin;
}
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.google.com"]];
[self.webView loadRequest:request];
self.webView.scrollView.delegate = self;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow)
name:UIKeyboardWillShowNotification
object:nil];
// NOTE THAT SIMPLY DISABLING THE SCROLL WILL NOT PREVENT KEYBOARD SCROLL
//[self.webView.scrollView setScrollEnabled:NO];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)keyboardWillShow {
NSLog(@"keyboard");
origin = self.webView.scrollView.contentOffset;
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@"scroll");
[self.webView.scrollView setContentOffset:origin];
}
@end
Wenn Sie konsistente Scroll-Verhalten wollen ...
nahm ich einige Zeit diese Rolle Modifikation zu codieren up. Sie können es als Referenz verwenden, um ein eigenes Scroll-Verhalten zu erstellen, das für iOS 5 konsistent ist. 6 In diesem Code: Wenn der Benutzer auf ein Texteingabefeld auf einer Webseite klickt, hält der Code das Standard-Scrollverhalten an Seite scrollte zu seiner aktuellen Position. Leider gibt es keine Möglichkeit, das gesamte Scrollen abzubrechen, sondern Scrollen zu überschreiben.Sobald das Standard-Scrolling "unterdrückt" wurde, erhält es die Position des aktiven Eingabefeldes und scrollt zu dieser Position. Dadurch wird das aktive Eingabefeld oben auf dem Bildschirm angezeigt. Sie können dies nach Ihren Wünschen ändern. Zum Beispiel können Sie [UIScrollView scrollRectToVisible] verwenden, um es mehr wie iOS5 zu machen.
Wenn dieser Code Ihnen geholfen hat, wäre es sehr nett von Ihnen, das Kopfgeld an mich zu belohnen. Ich wäre demütig dankbar.
konnte Eine Abhilfe die Rolle in diesem UIWebView deaktivieren werden:
UIScrollView *scrollView = webView.scrollView;
[scrollview setScrollEnabled:NO];
[scrollView bounces:NO];
Ein anderer die UIEdgeInsets dieser Scroll Einstellung werden könnte, aber ich weiß nicht viel über diese.
Ich denke, das ist ein Standardverhalten in iOS 5 und 6 zu scrollen, um das Eingabefeld nur auf der Oberseite der Tastatur zu machen (genau wie bei Safari).
Einstellung der ScrollEnabled verhindert nur Benutzer Scrollen, nicht Tastatursystem Scrollen –
Ok gut zu wissen, danke für Ihr Feedback – dulgan
Die geprüfte Antwort auf diesen Beitrag Ihre Antwort hat: How to make a UITextField move up when keyboard is present?
Kurz gesagt, müssen Sie die Ansicht bewegen, die Eingaben enthält, die aus der Sicht geschoben werden. Der Post enthält auch einen Beispielcode für die Vorgehensweise.
Hoffe, das hilft.
die Frage bezieht sich speziell auf eine WebView. Es gibt einen großen Unterschied zwischen einem UITextField- und einem Formular-Eingabefeld innerhalb einer Webseite. Der Beitrag, den Sie referenzieren, funktioniert nicht auf WebViews. –
- 1. Phonegap iOS - verhindern Scrollen auf Eingabefokus
- 2. Prevent auf Tastaturanzeige iOS Scrollen 6
- 3. Scrollen NSTextView nach unten
- 4. UIWebView nicht scrollen bis zum Ende/unten
- 5. UIWebView und Client-Zertifikate auf iOS 6
- 6. Inkrementieren Fortschrittsbalken nur auf Seite nach unten scrollen
- 7. WebBrowserControl Nach unten scrollen
- 8. Seite loading nach unten scrollen
- 9. Wie kann UIWebView vom "Bouncen" vertikal unten scrollen gestoppt werden?
- 10. Tastatur in UIWebView zeigt und verbirgt sich dann auf Eingabefokus
- 11. RecyclerView nicht scrollen nach unten
- 12. Textarea automatisch scrollen nach unten
- 13. Textarea automatisch nach unten scrollen
- 14. Nach unten scrollen [GeckoFx + Javascript]
- 15. AngularJS nach unten scrollen Anfängen
- 16. Android WebView nach unten scrollen
- 17. iOS 4.x: UIWebView iframe Scrollen
- 18. RecyclerView aktualisiert Elemente nur beim Scrollen nach unten und oben
- 19. UIWebView Scrollen Problem
- 20. iOS 5 und iOS 6 - UIWebView Unterschied im Verhalten
- 21. Auto scroll unten auf der Seite UIWebView
- 22. Android WebBrowser scrollen nach unten Seite
- 23. Scrollen in Android Studio nach unten?
- 24. WebView kann nicht von oben nach unten der Webseite scrollen
- 25. Wie Mausrad nach unten scrollen mit tmux
- 26. PyCharm Scrollen nach unten wie SublimeText
- 27. Ich kann nicht nach unten scrollen
- 28. Kann nicht UITableView nach unten scrollen
- 29. automatisch nach unten scrollen, wenn Überlauf Auto
- 30. IP-Kamera-Stream mit UIWebview funktioniert auf IOS 5 aber nicht auf IOS 6
Was ist der Rahmen Ihres UIWebView? – Jessedc
Können Sie mir den Link/URL geben, was Sie in der Webansicht öffnen? Damit ich dein Problem besser verstehen kann. – Swati