Index: src/wp-admin/includes/media.php
===================================================================
--- src/wp-admin/includes/media.php	(revision 28847)
+++ src/wp-admin/includes/media.php	(working copy)
@@ -1759,7 +1759,6 @@
 
 $plupload_init = array(
 	'runtimes'            => 'html5,flash,silverlight,html4',
-	'browse_button'       => 'plupload-browse-button',
 	'container'           => 'plupload-upload-ui',
 	'drop_element'        => 'drag-drop-area',
 	'file_data_name'      => 'async-upload',
@@ -1772,6 +1771,15 @@
 	'multipart_params'    => $post_params,
 );
 
+$_is_ios = ( wp_is_mobile() && preg_match( '/iPad|iPhone|iPod touch/', $_SERVER['HTTP_USER_AGENT'] ) );
+// iOS gets 2 buttons, one for selecting multiple existing files,
+// another for taking a snapshot and uploading it directly
+if ( $_is_ios ) {
+	$plupload_init['browse_button'] = array('plupload-browse-button-single','plupload-browse-button');
+} else {
+	$plupload_init['browse_button'] = 'plupload-browse-button';
+}
+
 /**
  * Filter the default Plupload settings.
  *
@@ -1810,7 +1818,18 @@
 	<div class="drag-drop-inside">
 	<p class="drag-drop-info"><?php _e('Drop files here'); ?></p>
 	<p><?php _ex('or', 'Uploader: Drop files here - or - Select Files'); ?></p>
-	<p class="drag-drop-buttons"><input id="plupload-browse-button" type="button" value="<?php esc_attr_e('Select Files'); ?>" class="button" /></p>
+	<p class="drag-drop-buttons">
+		<button id="plupload-browse-button" type="button" class="button"><?php _e('Select Files'); ?></button>
+		<?php
+
+		if ( $_is_ios ) {
+			?>
+			<button id="plupload-browse-button-single" type="button" class="button"><?php _e('Select Source'); ?></button>
+			<?php
+		}
+
+		?>
+	</p>
 	</div>
 </div>
 <?php
Index: src/wp-includes/js/plupload/handlers.js
===================================================================
--- src/wp-includes/js/plupload/handlers.js	(revision 28847)
+++ src/wp-includes/js/plupload/handlers.js	(working copy)
@@ -479,6 +479,18 @@
 		uploader.bind('UploadComplete', function() {
 			uploadComplete();
 		});
+
+		$(document).on( 'touchstart', function( event ) {
+			var shims = $('input[id^="html5_"]'),
+				multi = shims && shims[0],
+				single = shims && shims[1];
+
+			if ( multi && event.target === multi ) {
+				uploader.setOption( 'multi_selection', true );
+			} else if ( single && event.target === single ) {
+				uploader.setOption( 'multi_selection', false );
+			}
+		});
 	};
 
 	if ( typeof(wpUploaderInit) == 'object' ) {
