La adición de algunos controles para UIAlertView ya no se utiliza en iOS7 utilizando addSubview método. Como sé que Apple prometió agregar contentView de la propiedad.

de iOS 7 es lanzado ahora y veo que esta propiedad no es un añadido. Es por eso que la búsqueda de alguna solución personalizada con la posibilidad de agregar de la barra de progreso para este alertView. Algo que, por ejemplo, similar a TSAlertView, pero más listo para usar en de iOS 7.

  • Las semillas modificadas genéticamente se libera, no la versión pública. Prueba y elevar los informes de error con Apple, si es necesario.
  • Como ha sido señalado muchas veces aquí en ASÍ, iOS 7 preguntas no son off-topic. Por supuesto, no hay dev debe hablar de cosas cubiertos por el NDA que acordaron. Pero por LO que específicamente no le importa.
  • la alteración de UIAlertView la vista de jerarquía que está explícitamente prohibido durante bastante tiempo ahora. «El UIAlertView clase está diseñada para usarse como es y no admite la creación de subclases. El punto de vista de la jerarquía de esta clase es privada y no debe ser modificado.»
  • posibles duplicados de Alerta de vista es mostrar rectángulo blanco en iOS7
  • ¿Tienes los enlaces a la documentación acerca de Apple decisiones sobre esto? Yo no puedo ver la referencia a addSubview siendo eliminado en la API de iOS 7 Diff documento
  • No hay enlaces o palabras en UIAlertView documentación. Sólo el hecho de que no funciona en iOS7 y un montón de discusiones sobre Apple DevForums
  • Si usted necesita solamente un campo de texto o de un inicio de sesión de diálogo ver [mi respuesta para un diálogo de inicio de sesión][1] [1]: stackoverflow.com/a/19051713/993494
  • Como una alternativa a la deseada contentView se podría establecer el valor de la «accessoryView» la clave para una vista personalizada en iOS7 (sólo disponible en iOS7 y no compatible) y así lograr el mismo resultado como la adición de una subvista. Para obtener más información, consulte este MODO de respuesta: stackoverflow.com/questions/18759206/…
  • de iOS8 uso UIAlertController lugar
  • Trabajando como un encanto stackoverflow.com/a/25175893/2459296

InformationsquelleAutor B.S. | 2013-09-10

8 Comentarios

  1. 55

    Aquí es un proyecto en Github añadir ningún UIView a un UIAlertView-en busca de diálogo en iOS7.

    (Copiada de este hilo de StackOverflow.)

    UIAlertView addSubview en iOS7

    • +1 por el Gran trabajo tio, voy a actualizar mi respuesta a añadir a su impresionante control.
    • gracias @null, eso es fantástico!
    • Otra bifurcación con otro diseño aquí : github.com/kwent/ios-custom-alertview.
    • Esto no funciona con ARCO de movilidad. Apenas pasó la mayor parte de mi tarde tratando de arreglar el original de github del proyecto, pero fue en vano.
    • Gracias a @WedgeMartin; es cierto, este proyecto es un ARCO de uno. Sin embargo, usted no necesita fix el original, acaba de establecer una excepción en Xcode: stackoverflow.com/questions/10523816/…
    • Tengo implementar esta biblioteca . Uno piensa que soy unbale a resolver . ¿Cómo puedo acceder a la propiedad de ver como uiview , uibutton de esta costumbre alertview ?

  2. 35

    Me tomó solo 1 día para crear mi propia vista de alerta que se ve exactamente como Apple

    1. Tomar una captura de pantalla de Apple alerta de referencia (tamaños de letra, el espaciado de anchura)
    2. Crear un xib con el título, el mensaje, la costumbre de ver y tablas para los botones (Apple utiliza tablas en lugar de UIButton ahora, por defecto celda de la tabla es lo suficientemente bueno). Nota: necesita 3 botón de tablas: dos para los botones izquierdo y derecho (siempre que el número de botones 2), otra para el resto de los casos (un botón, o más de 2 botones).
    3. Implementar todos los métodos de UIAlertView en su alerta personalizada.

    4. Mostrar/a Despedir – se puede crear una ventana modal para su alertas pero acabo de poner mis alertas en la parte superior de mi raíz controlador de vista. Registre su visible alertas a una matriz estática. Si muestra la primera alerta/desestimando el último, el cambio de matiz en el modo de la ventana/vista controlador atenuado/a automático y agregar o quitar de un oscurecimiento de la vista (negro con alfa = 0.2).

    5. De desenfoque de fondo – el uso de Apple código de ejemplo (he utilizado el color blanco opaco)
    6. 3D efectos dinámicos de uso de Apple código de ejemplo (5 líneas de código). Si quieres un buen efecto, tomar un poco más grande instantánea en el paso 5 y agregar inversa animadores para la alerta de fondo y de primer plano.

    EDITAR:

    Tanto de desenfoque de fondo y el efecto paralax código de ejemplo puede ser encontrado en «iOS_RunningWithASnap» la WWDC 2013 código de ejemplo

    Paralax efecto:

    UIInterpolatingMotionEffect* xAxis = [[[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.x"
                                                                                         type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis] autorelease];
    xAxis.minimumRelativeValue = [NSNumber numberWithFloat:-10.0];
    xAxis.maximumRelativeValue = [NSNumber numberWithFloat:10.0];
    
    UIInterpolatingMotionEffect* yAxis = [[[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.y"
                                                                                         type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis] autorelease];
    yAxis.minimumRelativeValue = [NSNumber numberWithFloat:-10.0];
    yAxis.maximumRelativeValue = [NSNumber numberWithFloat:10.0];
    
    UIMotionEffectGroup *group = [[[UIMotionEffectGroup alloc] init] autorelease];
    group.motionEffects = @[xAxis, yAxis];
    [self addMotionEffect:group];

    El fondo desenfocado es la única cosa complicada. Si usted puede utilizar un color opaco en lugar de eso, lo utilizan. De lo contrario, es un montón de experimentos. También tenga en cuenta que de desenfoque de fondo no es una buena solución cuando el fondo es oscuro.

    Para el show/descartar animationg, estoy usando la nueva primavera de la animación método:

    void (^animations)() = ^{
        self.alpha = 1.0f;
        self.transform = CGAffineTransformIdentity;
    };
    
    self.alpha = 0.0f;
    self.transform = CGAffineTransformMakeScale(0.5f, 0.5f);
    
    [UIView animateWithDuration:0.3
                          delay:0.0
         usingSpringWithDamping:0.7f
          initialSpringVelocity:0.0f
                        options:UIViewAnimationOptionCurveLinear
                     animations:animations
                     completion:^(BOOL completed) {
                             //calling UIAlertViewDelegate method
                         }];
    • Me podría decir que la WWDC de vídeo o de la muestra es el uso de las 3d/efecto de paralaje? gracias. andrea
    • Bueno he encontrado esto para ser muy útil. Se le dio todo lo necesario para realizar tal acción, con las opciones de habilidades extra, yo digo ¡buen trabajo!
    • Si pongo mi vista en la parte superior de la raíz de controlador de vista de lo que acerca de la orientación????
    • George Asda: Sulthan tuvo la amabilidad de proporcionar un alto nivel de la lista de verificación de lo que para cubrir a la hora de crear un UIAlertView clon. También, se presentó la integridad como un empleado por no directamente el intercambio de código que alguien ha pagado. Él no tenía que ayudar en todo. Mostrar un poco de respeto. Mejor aún, crear una aplicación y compartirlo con nosotros… no hagas a los demás etc.
  3. 32

    Escribí una implementación completa de UIAlertView que imita la completa UIAlertView de la API, pero agrega la contentView propiedad todos hemos querido durante tanto tiempo: SDCAlertView.

    UIAlertView addSubview en iOS7

    • ¿Qué tipo de «paquete» estaba pensando?
    • más como una lista de los archivos que alguien necesita para obtener esta trabajando en su proyecto sin las vainas de cacao [email protected] (es mi humilde opinión). Por CIERTO, hay un «bug» en este.. cuando intenta agregar un uitextview es que no responde (creo que es añadido «debajo» de algún otro punto de vista y toques no son detectados..)
    • Como para el error: por favor haga una pregunta aparte y agregar la información correspondiente y el código. El archivo LÉAME indica que los archivos de las necesidades del proyecto para construir correctamente. No está seguro de lo que tiene en contra de Cocoapods, pero muchas personas consideran que es la forma más sencilla de obtener la más actualizada de los archivos para este proyecto.
    • Considero que es un gran negativo en contra de una biblioteca, si no es compatible con cocoapods, y en gran medida lo prefieren sobre otros, mucho más método manual de la adición de una tercera parte de la biblioteca. Pero para quien no le guste, que siempre se puede tomar el camino difícil si así lo desean.
    • No puedo estar más de acuerdo. Yo estaba pensando lo mismo! Más y más proyectos están tratando de forzar a los desarrolladores a utilizar vainas! Es un gran proyecto, pero no quiero utilizar vainas para cada proyecto que hago! ¿Qué tan difícil es crear un proyecto de demostración, sin forzar el desarrollador para instalar cocoapods, ¿verdad?
    • Está bien si un proyecto apoya cocoapods. Yo creo que es mejor si los desarrolladores no uso las vainas en el proyecto de demostración se incluyen con la biblioteca, de manera que la gente que no les gusta el uso de vainas puede comprobar fácilmente hacia fuera.
    • Así que usted puede agregar a su proyecto de demostración de forma manual. Permiten a los desarrolladores que descargar el proyecto preocuparse de las actualizaciones en esas dependencias. Crear dos demos. Que es lo que yo haría de todos modos… ¿Qué pasa si una de las dependencias que se actualiza y se rompe tu proyecto????
    • Que no es una mala idea. Si usted puede crear un problema para él sería estupendo, me temo que me puede olvidar lo contrario.
    • Las vainas son definitivamente el camino a seguir. Ignorar a los detractores. Si no desea utilizar Vainas es lo suficientemente simple como para agregarlo manualmente, estoy sorprendido por lo grosero de la anti-pod multitud.
    • si una de las dependencias que se actualiza y se rompe tu proyecto????» Con cocoapods puede definir la versión de su dependencia y la «congelación» de allí. Por otro lado, no es siempre tan fácil con copia manual de los archivos para saber exactamente a que la versión que usted necesita.
    • todo lo que digo es que yo quiero estar a cargo de lo que quiero descargar y no algún sangriento pod…. Usted no tiene que estar de acuerdo conmigo. Sólo tienes que aceptar un punto de vista diferente.

  4. 27

    Para aquellos que aman métodos simples y eficaces sin la necesidad de escribir líneas de código. Aquí es una solución fresca sin necesidad de utilizar ningún otro privado marco de las obras para la adición de subvistas a ios 7 vistas de alertas,es decir,

    [alertView setValue:imageView forKey:@»accessoryView»];

    Código de ejemplo para una mejor comprensión,

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(180, 10, 85, 50)];
    UIImage *wonImage = [UIImage imageNamed:@"image.png"];
    [imageView setImage:wonImage];
    
    //check if os version is 7 or above
    if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
          [alertView setValue:imageView forKey:@"accessoryView"];
    }else{
          [alertView addSubview:imageView];
    }

    Esperanza que ayuda a algunas,gracias 🙂

    • Puedo solicitar el abajo votante la amabilidad de revisar la respuesta cuidadosamente y pensar dos veces antes de votar abajo. Al menos, la razón en el comentario es min. criterios :v
    • No de trabajo. Se está trabajando sin iOS 7 que significa else condición está trabajando bien con addSubview pero if condición no está trabajando con setValue.
    • Por favor, compruebe su versión de Xcode, ios 7 está disponible en Xcode con la versión de 5 y por encima de
    • Impresionante respuesta. Trabajó como un encanto para mí para añadir un UIActivityIndicatorView a la UIAlertView. Acabo de cambiar el UIImageView con el indicador de actividad
    • Trabajó también para mí, genial, gracias!
    • El tamaño de la imagen es ignorado. No puede entender por qué.

  5. 17

    Para IOS7

    UIAlertView *alertView1 = [[UIAlertView alloc] initWithTitle:@"Enter Form Name" 
                                                   message:@""
                                                   delegate:self 
                                                   cancelButtonTitle:@"Cancel"
                                                   otherButtonTitles:@"Ok", nil];
    alertView1.alertViewStyle = UIAlertViewStyleSecureTextInput;
    UITextField *myTextField = [alertView1 textFieldAtIndex:0];
    [alertView1 setTag:555];
    myTextField.keyboardType=UIKeyboardTypeAlphabet;
    
    [alertView1 show];
    • Usted me ha ayudado mucho!
    • Esto funciona para iOS 5 y versiones posteriores. No es solo un problema de iOS 7 cosa.
  6. 10

    No habrá UIAlertView con vistas personalizadas en iOS7, ni contentView que Apple ha cambiado su mente, así que addSubview ahora es imposible en UIAlertView.

    Una buena alternativa será SVProgressHUD, según muchos hilos en Apple foro.

    Editar:

    Hay oficialmente no addSubview ni subclases para UIAlertView en iOS7.

    La UIAlertView clase está diseñada para usarse como está y no
    apoyo a la creación de subclases. El punto de vista de la jerarquía de esta clase es privado y
    no debe ser modificado.

    Otras buenas alternativas:

    ios-custom-alertview por wimagguc

    MZFormSheetController.

    • Sigo pensando que la va a agregar contentView como se había prometido, porque es una estúpida decisión de romper con la interfaz de usuario en aplicaciones existentes.
    • Es mejor tratar de averiguar de una manera diferente. No va a ser un milagro. 😉
  7. 1

    Usted puede encontrar solución simple sin clases extra aquí

    Se basa en el establecimiento de accessoryView para el común de los UIAlertView.

  8. 1

    PKAlertController (https://github.com/goodpatch/PKAlertController) es una gran biblioteca. He probado un montón de bibliotecas similares y sólo esta satisfecho todas mis necesidades.

    Por qué es genial:

    • Soporta vista personalizada
    • Apoya iOS7
    • Es vista controlador
    • Se comporta y se ve como nativos de vista de alerta, incluyendo los efectos de movimiento de
    • Personalizable
    • Interfaz Similar como en UIAlertController

Dejar respuesta

Please enter your comment!
Please enter your name here