Page MenuHomePhabricator

iOS Safari: Can't save edit in WikiText editor after entering edit summary
Closed, ResolvedPublic

Description

Steps to reproduce:

  1. On an iPhone, start editing an article with mobile Safari in the WikiText editor (can be either logged in or logged out)
  2. Click the "Next" button
  3. Click in the text area to write an edit summary (which should activate the virtual keyboard).
  4. Hit "Done" to dismiss the virtual keyboard.

Expected result: You can now click "Save" and finish the edit.
Actual result: The "Save" button isn't visible and you can't scroll further up than the "How did you improve the page?" text. If you pinch to zoom out, however, you can get to the button and save.

Here's a screenshot. You can't scroll up further than this. Notice also the grey line near the bottom of the screen. Not sure if that's related.

Image-1.jpg (1×640 px, 97 KB)

Browser details: Mobile Safari, iOS 12.1, iPhone SE

May be related to T218062, T211490, and/or T218069, but Rummana suggested I file a separate bug just in case.

Event Timeline

Here's a graph Ed generated of number of saveSuccess events in iOS. Looks like there was a noticeable drop around Feb 20th, which might be related to this bug. David Lynch hypothesizes that the bug mainly affects iPhones with smaller screens.

iOS mobile editing.png (323×512 px, 30 KB)

Change 496682 had a related patch set uploaded (by Jdlrobson; owner: Jdlrobson):
[mediawiki/extensions/MobileFrontend@master] iOS: Do not jump to top of text editor during typing

https://gerrit.wikimedia.org/r/496682

Change 496682 merged by jenkins-bot:
[mediawiki/extensions/MobileFrontend@master] Do not jump to top of text editor during typing

https://gerrit.wikimedia.org/r/496682

For future reference, in case we go back to the previous approach (@Jdlrobson's commit here basically removes all iOS scrolling workarounds), I think the necessary fix would be to change the EditorOverlay isActiveWithKeyboard() function:

	isActiveWithKeyboard: function () {
		return this.$( '.wikitext-editor' ).is( ':focus' );
	},

To instead read:

		return this.$( '.wikitext-editor' ).is( ':focus' ) || this.$( '.summary' ).is( ':focus' );

(I didn't test this though)

This should be fixed in production. Can somebody confirm?

ppelberg claimed this task.