Q:

Delay in selection when running iOS app using webkit

I have been working on writing application on iOS using webkit and AngularJs for front end as I was doing it I experienced a delay while selecting buttons on the pages.So I wrote a directive to implement select on touchstart for the button but still I am getting the delay on selection.
The directive I have written is given below:
angular.module('test').directive('fastClick',function(){

    // Runs during compile
    return {       
        restrict: 'A', // E = Element, A = Attribute, C = Class, M = Comment
        link: function($scope, iElm, iAttrs, controller) {

            iElm.bind('touchstart',function(){
                var event = document.createEvent('Event');
                event.initEvent('select', true, true);
                iElm[0].addEventListener('select',true, false);
                iElm[0].dispatchEvent(event);
            });
        }
    };
});

And I had disabled zoom on the webpage.

A:

As you mentioned in the comments, you are experiencing a delay whenever you click a button. The main reason for the delay is that mobile browsers implement a 300ms delay to decide if the user wants to double-tap to zoom in on the page. I highly recommend this article, which explains the problem in more detail. Basically its the following:

On touch devices such as phones or tablets, browsers implement a 300ms
  delay between the time the user stops touching the display and the
  moment the browser executes the click. It was initially introduced so
  the browser can tell if the user wants to double-tap to zoom in on the
  webpage. Basically the browser waits roughly 300ms to see if the user
  is double-tapping, or just tapping on the display once. While 300ms
  seems pretty short, it’s surprising just how noticeable it is when you
  remove the delay.

One possible solution, in case you are not using a hybrid mobile app framework such as Ionic, to use FastClick.

FastClick is a simple, easy-to-use library for eliminating the 300ms
  delay between a physical tap and the firing of a click event on mobile
  browsers.

Also, if you decide to use FastClick I suggest to initialize it in a run block like so:
angular.module('myModule', [])
  .run(function() {
    FastClick.attach(document.body);
  });

FastCklick is heavily tested, widely used and works great on many devices.
Another option is to use ngTouch. However, ngTouch overrides ngClick and hence only removes the delay on elements that have the ng-click attribute.

