2012-06-26 14 views
7

Estoy haciendo una barra de navegación personalizada utilizando UIView y UIButtons en lugar de UINavigationBar.iPhone: ¿Cómo crear UIButton que puedes tocar fácilmente?

Pero mi UIButtons en la barra de navegación no responde con sensibilidad.

Tengo que tocar casi el centro de UIButton para tocar.
No responde si toco el borde del UIButton.

Pero los botones en la normal UINavigationBar se pueden tocar tocando el borde del botón.
Incluso tocando fuera del botón, se puede tocar.

El botón obturador o el botón Opción en la aplicación de la cámara también se puede tocar tocando el borde o fuera de los botones.

¿Cómo puedo implementar esos botones fácilmente seleccionables en mi aplicación?

+2

Algunos ejemplos de código pueden ayudar a diagnosticar el problema. –

+0

@ben Gracias. Buscaré un código de muestra. Pero este no es mi problema. Creo que esta es la especificación de 'UIButton'. Todos los 'UIButton' son menos sensibles que el botón' UINavigationBar'. Quiero saber alguna propiedad o forma de expandir la región que se puede tocar. –

+0

UIButton generalmente tiene un área de grifo muy grande. Es probable que los esté configurando mal en lugar de que se rompan y que necesiten evitarlo. La solicitud de Ben para el código es correcta. –

Respuesta

11

Usa una imagen y crea un botón personalizado. Ajuste el botón para que la imagen no se escale al tamaño de la vista del botón, sino que simplemente se centrará. Expande el tamaño del botón para que sea más grande que la imagen en cada lado. Apple hace esto también con cosas como botones de tabulación.

+0

Solo para aclarar, el tamaño real del botón es más grande que la imagen que muestra, por lo que el área táctil es mucho más grande que el tamaño de la imagen, aunque como solo aparece la imagen, un área mucho más grande es sensible al tacto. –

+1

gracias! funciona. Encontré que la propiedad de inserción de UIButton también es útil para expandir el área de toque. Y agregar un margen transparente a la imagen también puede expandir el área de toque. –

4

Descargo de responsabilidad:Este código no es probado, sin embargo, permite tener idea de cómo se puede hacer.

Hace un botón (en este caso 40px x 40px), y luego agrega una imagen de fondo a la que es más pequeña, por lo tanto da la impresión de que la imagen es muy "clicable".

// This image is 20px x 20px (Just an example) 
UIImage* backgroundImage = UIImage imageNamed:@"backgroundImage.png"] 

// Custom button, remember to add a target method 
UIButton* customButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
customButton.frame = CGRectMake(0.0, 0.0, 40.0, 40.0); 
customButton.contentMode = UIViewContentModeCenter; 
[customButton setImage:backgroundImage forState:UIControlStateNormal]; 

UIBarButtonItem* customBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:customButton]; 
self.navigationItem.rightBarButtonItem = customBarButtonItem; 
[customBarButtonItem release]; 
10

UIButton tiene un imageEdgeInsets property especialmente para este propósito. Simplemente haga un marco UIButton tan grande como lo necesite para un área táctil y que escale la imagen dentro de él apropiadamente, usando imageEdgeInsets.

Cuestiones relacionadas