2009-03-19 11 views
13

Tengo que agregar botones de opción en mi aplicación de iPhone. Para eso tengo la imagen del botón de radio que es de forma redonda. ¿Puedo agregar esa imagen como una subvista? y ¿Puedo agregar evento touchupinside a UIImage?Botón de radio en la aplicación para iPhone

+0

Intenté lo que dijiste, funciona bien. Inicialmente, el botón parece un botón redondo, pero en el momento en que se presiona el botón aparece el marco del botón (parece un botón cuadrado) – saikamesh

Respuesta

19

Las aplicaciones de iPhone no tienen botones de opción. La forma "similar a iPhone" de hacer esto es usar una vista de selector o tener varias filas en una vista de tabla agrupada con un accesorio de verificación en la fila elegida.

Si por alguna razón realmente, realmente siente la necesidad de tener botones de opción, use un botón UIButton con un botón de tipo personalizado. Establezca el círculo vacío como la imagen para el estado de control "normal" y el círculo relleno como la imagen para el estado "seleccionado".

+0

Intenté lo que dijiste, funciona bien. Inicialmente, el botón parece un botón redondo, pero en el momento en que se hace clic en el botón, aparece el marco del botón (parece un botón cuadrado) – saikamesh

+0

¿Cómo puedo deshacerme de esto? – saikamesh

+0

Si este no es factible, tengo que probar algo más. Así que dígame si es posible deshacerse de este comportamiento – saikamesh

0

Puede intentar usar la clase UIImageView que simplemente envuelve un UIImage dentro de un contenedor UIView. Es compatible con los eventos touchesBegan/Cancelled que serían adecuados, creo.

También podría considerar no usar una configuración de botón de radio como la que describió y, en su lugar, utilizar un enfoque similar al iPhone, por ejemplo, utilizando una UITableView con celdas correspondientes a sus selecciones de radio y esa función activada/desmarcado en un toque. Consulte el ejemplo de TouchCells en el sitio de desarrollo de Apple iPhone para ver un ejemplo.

+0

He creado mi clase de botón de radio extendiendo la clase UIButton, en mi clase de botón de radio, ¿cómo puedo Configuré el tipo de botón en UIButtonTypeCustom ?. – saikamesh

+0

Personalizado es el tipo de botón predeterminado. –

+0

Hola drewh, Finalmente hice lo que sugeriste. Usé la clase UIImageView y el evento touchesBegan. Funciona bien sin problemas. Muchas gracias. Gracias a Brent también por darme ideas. – saikamesh

1

También puede crear un UIWebView, cargar HTML que utiliza botones de opción y, a continuación, usar los métodos deleit UIWebView para supervisar el valor de la radio.

Es un truco, pero en algunos casos es exactamente lo que se necesita.

0

Si solo tiene las opciones "sí" o "no", utilice UISwitch.

Para el tipo múltiple usar el siguiente código:

-(void)buttonPressed:(id)sender{ 

if([sender isSelectd]) 

//here change button image and set 

[sender setSelected:NO]; 

}else{ 
//here change button image and set 

[sender setSelected:YES]; 

} 

recordar, cuando se crea el botón no se olvide de establecer el setSelected a NO.

5

Probar UISegmentedControl. Se comporta de forma similar a los botones de radio: presenta una matriz de opciones y permite al usuario elegir 1.

+0

¿sabes cómo se puede crear UISegmentedControl en Titanium? –

2
IBOutlet UIButton *checkboxButtonMale; 

IBOutlet UIButton *checkboxButtonFmale; 

    checkboxButtonFmale.tag = 3; 
    checkboxButtonMale.tag = 2; 

(IBAction)checkboxGenderChecked:(id)sender{ 


    UIButton *selectedButton = (UIButton *)sender; 
    UIButton *toggledButton; 

    if (selectedButton.tag == 2) { 
     toggledButton = checkboxButtonFmale; 
    } 
    else {  
     toggledButton = checkboxButtonMale; 
    } [toggledButton setSelected:NO]; 
    [sender setSelected:YES]; 
     } 
0

hice algo como esto y funciona:

- (IBAction)tickbuttonClicked:(id)sender 
{ 

UIButton *selectedButton = sender; 
UIImage *ticked = [UIImage imageNamed:@"tickbox_yes3.png"]; 
UIImage *unticked = [UIImage imageNamed:@"tickbox_no3.png"];  

    //untick active box 
    if((activetag>-1)&&(activetag!=[sender tag])){ 
     UIButton *thisButton = (UIButton *)[self.view viewWithTag:activetag]; 
     thisButton.backgroundColor = [UIColor colorWithPatternImage:unticked]; 
    } 

//tick sender 
if ([sender tag]!=activetag) 
{ 
    selectedButton.backgroundColor = [UIColor colorWithPatternImage:ticked]; 
    activetag=[sender tag]; 
    [selectedButton setSelected:YES]; 

} 

} 
1

Se podría utilizar un conjunto de s UIButton , luego use mi clase GSRadioButtonSetController para manejar la lógica (esencialmente, asegurando que solo se puede seleccionar un botón). Vea el archivo README en GitHub para el uso de la muestra.

0

// definir la propiedad del botón

Declarar imagen Unchaked

- (void)viewDidLoad 
    { 
     [ButtonChaked setBackgroundImage:[UIImage imageNamed:@"UnChacked.png"] forState:UIControlStateNormal]; 
    } 

Chaked imagen.

- (IBAction)ButtonChaked:(id)sender 
{ 
    if (ButtonChaked.selected ==YES) 
    { 
     [ButtonChaked setBackgroundImage:[UIImage imageNamed:@"UnChacked.png"] forState:UIControlStateSelected]; 

    ButtonChaked.selected =NO; 

} 
else 
{ 
    [ButtonChaked setBackgroundImage:[UIImage imageNamed:@"Chaked.png"] forState:UIControlStateNormal]; 
    ButtonChaked.selected = YES; 

} 


} 

que realmente utiliza

0

Acabo de publicar un control de botón de radio a iOS Cocoapods pod "DLRadioButton", para la documentación y ejemplos, por favor vaya a GitHub. Adjunto hay capturas de pantalla para este control. enter image description here

Cuestiones relacionadas