Pinch zoom com javascript (ongesturechange e style.zoom)

O Zoom com pinça é um recurso nativo do iphone porem você precisa capturar esse evento no javascript para poder manipular objetos específicos dentro do safari, hoje vou ensinar como capturar esse evento e como fazer o “scale” de um objeto com javascript.

Vamos utilizar o mesmo HTML e CSS do post anterior, o de “Movendo objetos com ontouchstart e ontouchmove para iPad/iPhone”, vou colocar o HTML e o CSS aqui para facilitar a sua compreensão.

HTML:

<!DOCTYPE HTML>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>Touch Events</title>
<link rel="stylesheet" href="gestos.css" media="all" />
</head>
<body>
<div id="item"></div>
<script type="text/javascript" src="gestos.js"></script>
</body>
</html>

CSS:

#item {
width: 100px;
height: 100px;
position: absolute;
border: 1px solid black;
}

e vamos ao javascipt, primeiro declaramos o objeto:

var obj = document.getElementById('item');

e depois atribuímos o evento a ele:

obj.ongesturechange = function(){ escala(event); };

crie a função escala:

function escala(e){
}

O evento ongesturechange possui um atributo scale, esses valores são representados da seguinte forma, 1 é o tamanho natural do objeto 0.1 é 10% do tamanho, dessa forma sabemos que 2 é o dobro do tamanho e asism sucessivamente.

Vamos utilizar o valor do scale, e atribui-lo ao Zoom.

function escala(e){
obj.style.zoom = e.scale;
}

E para finalizar colocamos e.preventDefault(); return false; para evitar a área de seleção indesejada

function escala(e){
obj.style.zoom = e.scale;

e.preventDefault();
return false;
}

no final seu javascript estará assim:

var obj = document.getElementById('item');
obj.ongesturechange = function(){ escala(event); };

function escala(e){
obj.style.zoom = e.scale;

e.preventDefault();
return false;
}

pronto, simples né, bem se esse post te ajudou não esquece de deixar um comentário.

Posted in iPhone | Tagged , , , , , | Leave a comment

Manipulando a área de seleção do usuário com CSS para iPhone e iPad

Sabe quando você toca a tela do iPhone/iPad e ele cria uma área de seleção, pois bem, isso é muito útil em formulários e coisas do tipo, porém quando você está manipulando objetos com ontouchmove ou ongesturechange isso é realmente desagradável, principalmente quando a área toda é selecionada, hoje vou ensinar como desabilitar isso com apenas uma linha de CSS para Webkit

Basta esolher o objeto que você deseja desabilitar (no meu caso vou fazer em todos), e manipule o atributo -webkit-user-select, ele pode receber 3 valores;

  • none – Para desabilitar.
  • auto – Para selecionar a caixa inteira.
  • text – Para selecionar apenas o texto tocado.

No exemplo vou tirar a seleção de todos os objetos:

* {
-webkit-user-select: none;
}

Simples não? Se isso te ajudou, deixe um comentário ;)

Posted in iPhone | Tagged , , , , | Leave a comment

Movendo objetos com ontouchstart e ontouchmove para iPad/iPhone

Nesse Post a ideia é explicar como você pode mover itens utilizando os eventos ontouchstart e ontouchmove para iphone e ipad.

No HTML crie uma div.

<!DOCTYPE HTML>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>Touch Events</title>
<link rel="stylesheet" href="touchEvents.css" media="all" />
</head>
<body>
<div id="item"></div>
<script type="text/javascript" src="touchEvents.js"></script>
</body>
</html>

No CSS coloque uma aparência para identificar onde ela está na tela, eu apenas coloquei uma borda preta.

#item {
width: 100px;
height: 100px;
position: absolute;
margin-left: -50px;
margin-top: -50px;
border: 1px solid black;
}

E no Javascript é que acontece a brincadeira, primeiro identifique o item que será movido pela tela:

var obj = document.getElementById('item');

atribua a ele os eventos:

obj.ontouchmove = function(){ moveObj(event); };
obj.ontouchstart = function(){ moveObj(event); };

Crie a função que vai disparar o evento:

function moveObj(e) {
}

Identifique o toque que vai registrar o evento:

function moveObj(e) {
target = e.touches.item(0);
}

Nesse caso 0 é o primeiro dedo, se no parâmetro for passado 1 por exemplo, será o segundo dedo a tocar o objeto que será armazenado como o target.

Atribua valores ao Left e Top da div com os valores do eixo Client

function moveObj(e) {
target = e.touches.item(0);
obj.style.left = target.clientX + "px";
obj.style.top = target.clientY + "px";
}

não se esqueça de concatenar o “px”

O seu objeto já deve estar andando pela tela, porem, como existe um tempo de contato com a tela o objeto ficará sendo selecionado, para desabilitar isso adicione e.preventDefault(); return false;

function moveObj(e) {
target = e.touches.item(0);
obj.style.left = target.clientX + "px";
obj.style.top = target.clientY + "px";
e.preventDefault();
return false;
}

É importante lembrar que esse Javascript está manipulando objetos da tela, sendo assim ele tem que ser executado apenas depois que tudo for renderizado, você pode adicionar ele ao “Ready” se você usa jQuery, ou apenas colocar no fim da pagina como eu fiz no exemplo.

No final o seu Javascript deve estar com essa aparência:

var obj = document.getElementById('item');

obj.style.left = target.clientX + "px";
obj.style.top = target.clientY + "px";

function moveObj(e) {
target = e.touches.item(0);
obj.style.left = target.clientX + "px";
obj.style.top = target.clientY + "px";
e.preventDefault();
return false;
}

não testei no android, testa ai e me diz nos comments se funfou, abraços!

Posted in iPhone | Tagged , , | Leave a comment

FullScreen no iPad

É importante manter seu conteúdo preparado para os dispositivos de tablet então ai vai um dica de como deixar seu site em fullscreen no ipad.

O iPad possui duas barras que são padrões dele, a barra de navegação do safári e a barra de energia do iPad, onde ele informa o sinal da antena, relógio e sinal do 3G ou Wifi.

No Header do seu HTML insira as seguintes meta-tags:


<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-capable" content="yes" />

A Barra do relogio do iPad não pode ser retirada, mas pode ficar transparente, com a metatag apple-mobile-web-app-status-bar-style e a apple-mobile-web-app-capable diz que é um conteudo de navegação restrita e não precisa da barra de navegação.

Não se esqueça de garantir a navegção na largura ideial para o usuario com a metatag viewport:


<meta name="viewport" content="width=device-width; initial-scale=1.0;" />

Essa tag garante que a escala do seu conteudo seja de 1-1 com a tela do usuario evitando problemas de dimensão.

Para testar como isso vai ficar adicione seu site ao Home Screem do seu iphone/ipad clicando no “+” antes da barra de endereço como mostra na imagem a seguir:

clique na opção Home Screen, ele vai criar um atalho na sua Home, acesse o site por esse atalho para ver o resultado.

Posted in iPhone | Tagged , , | 6 Comments

Habilitando Debug Console no iPad (Vale pro iPhone Tambem)

Debug Console é uma ferramenta extremamente útil para quem está desenvolvendo para o Safari do iPad e iPhone, principalmente com o uso da função console.log() que é melhor do que ficar travando o processo com alerts, com o console.log o fluxo continua tranquilamente.

Vá em settings:

Dentro, selecione a opção Safari:

E clique na opção Developer, quando você entrar a opção Console Debug estará desligada com mostra na imagem abaixo:

Ligue o console e pronto.

vá até o Safari e verifique se ele está habilitado

Espero que isso tenha ajudado.

Posted in iPhone | Tagged , , , | Leave a comment