Tengo una UIWebView en mi aplicación, y el problema es que tengo una UIAppearance que modifica la apariencia de controles segmentados, por lo que modifica el control segmentado en la vista de accesorio de entrada para campos de texto UIWebView, me gustaría que se vea correctamente o no intente modificarlo. Esto es lo que actualmente se ve como:iOS: evitar que la configuración de UIAppearance cambie la vista de accesorio de entrada UIWebView
iOS: evitar que la configuración de UIAppearance cambie la vista de accesorio de entrada UIWebView
Respuesta
simplemente he resuelto este problema por mí mismo mediante el uso de [UIAppearance appearanceWhenContainedIn:] en lugar de [apariencia UIAppearance].
Utilícelo enviando al selector una lista de todas sus clases personalizadas de ViewController que contienen los elementos que desea personalizar. Así que en lugar de
[[UISegmentedControl appearance] setBackgroundImage:buttonBackgroundImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
uso
[[UISegmentedControl appearanceWhenContainedIn:[MyViewController class], [MyOtherViewController class], nil] setBackgroundImage:buttonBackgroundImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
No es necesario enumerar todas las ViewControllers, sólo sus más alto nivel. Esto también hace posible el siguiente truco: Crear una subclase 'vacía' CustomizedViewController de UIViewController que no hace más que ser una subclase, y luego subclase desde allí a través de tu código en lugar de UIViewController (básicamente reemplaza todas las ocurrencias de 'UIViewController' con 'CustomizedViewController' -., excepto cuando CustomizedViewController realidad declaró UIViewController como su superclase
a continuación, utilizar
[[UISegmentedControl appearanceWhenContainedIn:[CustomizedViewController class], nil] setBackgroundImage:buttonBackgroundImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Había perdido la fe de que alguna vez me respondieran, daré una oportunidad más tarde, Stefan. Gracias. – 8vius
Por desgracia, el proyecto que estoy trabajando tiene cientos de clases que están en varios equipos utilizando código que no tiene control. La belleza de UIAppearance es que (en teoría) no tengo que meterme con las clases que trato de despellejar. No puedo revisar todas las clases que quiero exponer y darles una superclase común para que UIAppearance funcione. Tal vez si Apple hubiera incluido una apariencia. Cuando no esté contento, al menos podría suprimir el estilo de UIToolbars dentro de UIWebView ... – tyler
Para mí no funciona ... Cuando presenté el controlador de vista con vista web, la barra de herramientas tenía apariencia predeterminada, pero la barra de herramientas del teclado personalizado – HotJard
Ok, por lo que finalmente fue capaz de encontrar una solución para este ver mi comentario sobre la respuesta actual que explica por qué. la respuesta no funciona para mí.
Para volver a iterar, por lo que puedo decir, el código de iOS que está creando el accesorio de teclado está configurando explícitamente el fondo de la fondo de la UIToo, por lo que no obtendrá la configuración de fondo de UIAppearance, pero obtendrá su estilo de UIBarButtonItem. El resultado es una vista de estilo medio, que puede verse bastante mal. Afortunadamente, mi diseñador estuvo de acuerdo en volver al estilo predeterminado para este caso en particular.
Así que, el truco fue realmente encontrar la manera de lograr que esa vista NO se estilizara a través de UIAppearance. La forma en que hice esto fue reemplazar esto:
id barButtonAppearanceProxy = [UIBarButtonItem appearance];
Con esta:
// wtf: Style any UIBarButtonItem associated with a UIViewController
id barButtonAppearanceProxy = [UIBarButtonItem appearanceWhenContainedIn:[UIViewController class], nil];
Esto parecía extraño para mí al principio, porque yo estaba pensando en términos de contención en una vista jerarquía ... Pero esto solo indica que solo haremos un estilo de UIBarButtonItems asociados con UIViewController. La razón por la que esto no afecta al accesorio de teclado es porque se agrega directamente a la ventana de la vista principal y no está asociado con un UIViewController.
Todavía no es una solución perfecta ya que lo ideal es que acabemos de diseñar el accesorio de teclado con UIAppearance. Además, asume que todas sus barras de herramientas están asociadas con UIViewControllers. Afortunadamente para mí (y probablemente para la mayoría de ustedes) este suele ser el caso.
- 1. PhoneGap: ¿Hay alguna manera de evitar que el teclado cambie el tamaño de la vista?
- 2. iOS UIAppearance error
- 3. UITableViewCell accesorio Vista que no muestra
- 4. Prisma: cambie la vista activa
- 5. Evitar que UIWebView se desplace cuando aparezca el teclado
- 6. ¿Cómo puedo evitar la autocompletación del teclado en MobileSafari/UIWebView?
- 7. Cómo evitar que el usuario cambie la página con jQuery
- 8. iOS UIWebView dentro de UIScrollView
- 9. La rotación de paisaje de UIWebView no llena la vista
- 10. jquery: ¿evitar que la ventana cambie la posición de desplazamiento mientras antepone elementos a una lista?
- 11. Cómo evitar que UIBarButtonItem con atributos personalizados cambie de tamaño
- 12. Evitar que la vista principal reciba eventos táctiles después de que la vista infantil actúe en ella
- 13. iOS UITableViewCell accesorio en el lado izquierdo?
- 14. ¿Existe alguna manera de evitar que el bloqueo de fuentes cambie la familia de fuentes (y cambie solo el color)?
- 15. evitar que la vista de lista pierda el elemento seleccionado
- 16. iOS UIwebView Auth Cookies
- 17. Tamaño de configuración de la aplicación wpf/caliburn.micro mientras permite que el contenido cambie de tamaño con la ventana principal.
- 18. ¿Hay alguna manera de evitar que UIImagePickerController cambie el estilo de la barra de estado?
- 19. Configuración de ancho y alto UIWebView
- 20. Cambie dinámicamente la imagen de inicio en iOS
- 21. Cómo evitar que Soft Keyboard cambie el tamaño de la imagen de fondo
- 22. C# cómo evitar que el usuario cambie el tamaño de la ventana de mi aplicación?
- 23. Android: cambie la posición absoluta de una vista mediante programación
- 24. iOS uiwebview goBack control de historial
- 25. Comentarios de Facebook en iOS UIWebView
- 26. iPhone - cambiando el color de fondo de UIWebView detrás de la vista (fondo que rebota)
- 27. Evitar que Git cambie los permisos en pull
- 28. ¿Se rechazarán las aplicaciones de iOS que son solo UIWebView?
- 29. ¿Puedes usar UIAppearance para establecer la vista de título de UINavigationItem?
- 30. Cómo evitar HttpRequestValidationException en ASP.NET MVC que representa la misma vista que causó la excepción
Tengo el mismo problema. Me está volviendo loco. – Jarsen
No parece ser la configuración de apariencia para UISegmentedControl, pero la apariencia de la UIToolbar, no estoy muy seguro, pero parece que no puedo solucionarlo sin quitar mis apariencias.También parece que no hay una manera fácil y segura de simplemente eliminar la barra de herramientas de UIWebView – 8vius
Sí, parece que el problema es que está cambiando el alfa del área no seleccionada del controlador segmentado. Me pregunto si tiene que ver con la UIToolbar teniendo transparencia. – Jarsen