<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Notes of a Developer &#187; Private</title>
	<atom:link href="http://www.developers-life.com/tag/private/feed" rel="self" type="application/rss+xml" />
	<link>http://www.developers-life.com</link>
	<description>Develop on Objective-C, UIKit, C, OpenGL for  iPhone, iPad, Mac OS X</description>
	<lastBuildDate>Fri, 03 Feb 2012 11:49:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Эксперемент</title>
		<link>http://www.developers-life.com/an-experiment.html</link>
		<comments>http://www.developers-life.com/an-experiment.html#comments</comments>
		<pubDate>Sun, 13 Jun 2010 18:54:48 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Jailbreak]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Private]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[Кодинг]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=1045</guid>
		<description><![CDATA[Написал простенькую программку ради эксперимента. С помощью программы можно ходит по корневому разделу системы, без Jailbreak. Если кто-то имеет опыт как создать фаил в директории не принадлежащей программе,  без взлома устройства, и поделится! Буду очень признателен! И собственно сам код]]></description>
			<content:encoded><![CDATA[<p>     Написал простенькую программку ради эксперимента. С помощью программы можно ходит по корневому разделу системы, без Jailbreak. Если кто-то имеет опыт как создать фаил в директории не принадлежащей программе,  без взлома устройства, и поделится! Буду очень признателен!</p>
<p><a href="http://www.developers-life.com/wp-content/uploads/2010/06/photo.PNG" target="_blank"><img class="alignnone size-medium wp-image-1046" title="photo" src="http://www.developers-life.com/wp-content/uploads/2010/06/photo-225x300.PNG" alt="photo" width="158" height="210" /></a></p>
<p>И собственно <a href="http://depositfiles.com/files/t9uviw3z0" target="_blank">сам код</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/an-experiment.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Universal web services suite for iPhone/iPad and Android apps</title>
		<link>http://www.developers-life.com/universal-web-services-suite-for-iphoneipad-and-android-apps.html</link>
		<comments>http://www.developers-life.com/universal-web-services-suite-for-iphoneipad-and-android-apps.html#comments</comments>
		<pubDate>Thu, 25 Feb 2010 12:08:13 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Mob1serv]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Private]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[Кодинг]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=901</guid>
		<description><![CDATA[Hi there! We are a group of iPhone / Android developers who have developed a suite of web services to assist us and other developers in building great apps. After numerous projects we have become tired of having to set up the server scripts to do all the same things for different clients. Most of [...]]]></description>
			<content:encoded><![CDATA[<p>Hi there! We are a group of iPhone / Android developers who have developed a suite of web services to assist us and other developers in building great apps.</p>
<p>After numerous projects we have become tired of having to set up the server scripts to do all the same things for different clients. Most of the server functionality</p>
<p>is typical: 1) storing location data for Google Maps; 2) storing users&#8217; high scores / ranks; 3) sending Push Notifications; 4) storing files / XML; etc.</p>
<p>We couldn&#8217;t use the existent solutions because in some cases they didn&#8217;t provide the required functionality and in most cases they require your users to be exposed to some social network of theirs, while our clients just want a simple functionality without users knowing of any services behind that.</p>
<p>So we have launched what we call Mob1serv, a universal server solution for the typical needs of iPhone / Android apps. It consists of modules which deal with most common tasks:</p>
<p>    * High Scores &#8211; a powerful online high scores table<br />
    * PushNote &#8211; a module allowing to send immediate or delayed Push Notifications (you can build instant messengers or alarm clocks, anything with this)<br />
    * GeoPos &#8211;  stores locations of Google Map objects, their statuses and &#8216;last seen online&#8217; time<br />
    * OAuth contracter  &#8211; allows you to implement transparent authentication and integration with Facebook, Twitter, Google etc<br />
    * More modules to come!</p>
<p><span id="more-901"></span><br />
We have tried to make it as simple as possible for developers, so you just need to register at the back end and then you can add as many apps as you want and start using these services. From the client (app) side, you need to add a library to your project and put a corresponding ID there, that&#8217;s it.</p>
<p>The service is free, it&#8217;s a &#8216;freemium&#8217; model. It has been built by developers for developers. Some developers and apps are already using it as it was open for alpha testing before, but now we are launching it open for the world so that we can see what you&#8217;re thinking of it and also get your feedback of how we can improve the existent modules or what modules to add next. Welcome to <a href="http://www.mob1serv.com/" title="universal web service for iPhone and Android apps">Mob1serv</a>!</p>
<p><a href="http://www.facebook.com/pages/mob1serv-universal-web-service-for-iPhone-Android/324022903887"><img src="http://gyazo.com/b2486f4d2738f2cb7724d7ebd87321ce.png" title="become our Facebook fan" border="0"></a></p>
<p><a href="https://twitter.com/mob1serv/">Twitter</a></p>
<p><a href="http://www.youtube.com/user/mob1serv">Youtube</a></p>
<p><a href="http://www.vimeo.com/mob1serv">Vimeo</a></p>
<p><a href="http://digg.com/apple/universal_server_API_solution_for_iPhone_Android">Digg</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/universal-web-services-suite-for-iphoneipad-and-android-apps.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Radio buttons for iPhone application</title>
		<link>http://www.developers-life.com/radio-buttons-in-iphone-application.html</link>
		<comments>http://www.developers-life.com/radio-buttons-in-iphone-application.html#comments</comments>
		<pubDate>Wed, 03 Feb 2010 00:47:26 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Private]]></category>
		<category><![CDATA[UIButton]]></category>
		<category><![CDATA[UIImage]]></category>
		<category><![CDATA[UIKit]]></category>
		<category><![CDATA[Кодинг]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=864</guid>
		<description><![CDATA[Presented simple and nice solution for radio buttons, based on the UIButton. Add buttons on view of controller 123456789for &#40;int i = 0; i &#60; 5; i++&#41; &#123; &#160; &#160; &#160; &#160; &#160; UIButton *but = &#91;UIButton buttonWithType:UIButtonTypeCustom&#93;; &#160; &#160; &#160; &#160; &#160; &#91;but setImage:&#91;UIImage imageNamed:@&#34;checkbox.png&#34;&#93; forState:UIControlStateNormal&#93;; &#160; &#160; &#160; &#160; &#160; &#91;but setImage:&#91;UIImage imageNamed:@&#34;checkedbox.png&#34;&#93; [...]]]></description>
			<content:encoded><![CDATA[<p>Presented simple and nice solution for radio buttons, based on the UIButton.</p>
<p>Add buttons on view of controller</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #a61390;">for</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">int</span> i <span style="color: #002200;">=</span> <span style="color: #2400d9;">0</span>; i &lt; <span style="color: #2400d9;">5</span>; i<span style="color: #002200;">++</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; UIButton <span style="color: #002200;">*</span>but <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIButton buttonWithType<span style="color: #002200;">:</span>UIButtonTypeCustom<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>but setImage<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>UIImage imageNamed<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;checkbox.png&quot;</span><span style="color: #002200;">&#93;</span> forState<span style="color: #002200;">:</span>UIControlStateNormal<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>but setImage<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>UIImage imageNamed<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;checkedbox.png&quot;</span><span style="color: #002200;">&#93;</span> forState<span style="color: #002200;">:</span>UIControlStateSelected<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>but setFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0</span>, <span style="color: #2400d9;">0</span>, <span style="color: #2400d9;">17</span>, <span style="color: #2400d9;">17</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>but setCenter<span style="color: #002200;">:</span>CGPointMake<span style="color: #002200;">&#40;</span> <span style="color: #2400d9;">50</span>, &nbsp;i<span style="color: #002200;">*</span><span style="color: #2400d9;">40</span><span style="color: #002200;">+</span><span style="color: #2400d9;">20</span> <span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>but addTarget<span style="color: #002200;">:</span>self action<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>checkboxButton<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span> forControlEvents<span style="color: #002200;">:</span>UIControlEventTouchUpInside<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>self.view addSubview<span style="color: #002200;">:</span>but<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
<p><a href="http://gyazo.com/d1b32dba680d02954885fef2d0d072f7.png"><img alt="" src="http://gyazo.com/d1b32dba680d02954885fef2d0d072f7.png" class="alignnone" width="183" height="64" /></a></p>
<p><span id="more-864"></span><br />
Action for buttons:</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span>IBAction<span style="color: #002200;">&#41;</span>checkboxButton<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIButton <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>button<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">for</span> <span style="color: #002200;">&#40;</span>UIButton <span style="color: #002200;">*</span>but <span style="color: #a61390;">in</span> <span style="color: #002200;">&#91;</span>self.view subviews<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">&#91;</span>but isKindOfClass<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>UIButton class<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span> <span style="color: #002200;">&amp;&amp;</span> <span style="color: #002200;">!</span><span style="color: #002200;">&#91;</span>but isEqual<span style="color: #002200;">:</span>button<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#91;</span>but setSelected<span style="color: #002200;">:</span><span style="color: #a61390;">NO</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">!</span>button.selected<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; button.selected <span style="color: #002200;">=</span> <span style="color: #002200;">!</span>button.selected;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
<p><a href="http://depositfiles.com/files/6m7x0q40l">you can will get UI from here</a></p>
<p>good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/radio-buttons-in-iphone-application.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Disabling default zoom for UIWebView</title>
		<link>http://www.developers-life.com/disabling-default-zoom-for-uivewview.html</link>
		<comments>http://www.developers-life.com/disabling-default-zoom-for-uivewview.html#comments</comments>
		<pubDate>Wed, 25 Nov 2009 21:33:54 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[Private]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=676</guid>
		<description><![CDATA[Make and add custom object from UIView on top UIWebView 12345678910111213141516171819202122232425262728293031323334@interface CUIView : UIView &#123; &#160; &#160; &#160;UIWebView *web; &#160; &#160; &#160;int time; &#125; @property &#40;nonatomic, assign&#41; UIWebView *web; @end @implementation CUIView @synthesize web; -&#40;UIView *&#41;hitTest:&#40;CGPoint&#41;point withEvent:&#40;UIEvent *&#41;event &#123;&#160; &#160; &#160; &#160; &#160;BOOL forwardToSuper = YES; &#160; &#160; &#160;if &#40;time == &#40;int&#41;event.timestamp&#41; &#123; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Make and add custom object from UIView on top UIWebView</p>
<p><img alt="" src="http://gyazo.com/9c76f6a9b2777283ed42757266cb5480.png" class="alignnone" width="345" height="298" /></p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #a61390;">@interface</span> CUIView <span style="color: #002200;">:</span> UIView <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;UIWebView <span style="color: #002200;">*</span>web;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">int</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/time.html"><span style="color: #a61390;">time</span></a>;<br />
<span style="color: #002200;">&#125;</span><br />
<span style="color: #a61390;">@property</span> <span style="color: #002200;">&#40;</span>nonatomic, assign<span style="color: #002200;">&#41;</span> UIWebView <span style="color: #002200;">*</span>web;<br />
<span style="color: #a61390;">@end</span><br />
<br />
<br />
<span style="color: #a61390;">@implementation</span> CUIView<br />
<br />
<span style="color: #a61390;">@synthesize</span> web;<br />
<br />
<span style="color: #002200;">-</span><span style="color: #002200;">&#40;</span>UIView <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>hitTest<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>CGPoint<span style="color: #002200;">&#41;</span>point withEvent<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIEvent <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>event <span style="color: #002200;">&#123;</span>&nbsp; &nbsp;<br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">BOOL</span> forwardToSuper <span style="color: #002200;">=</span> <span style="color: #a61390;">YES</span>;<br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><a href="http://www.opengroup.org/onlinepubs/009695399/functions/time.html"><span style="color: #a61390;">time</span></a> <span style="color: #002200;">==</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">int</span><span style="color: #002200;">&#41;</span>event.timestamp<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #11740a; font-style: italic;">// prevent this </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;forwardToSuper <span style="color: #002200;">=</span> <span style="color: #a61390;">NO</span>;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#125;</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
<br />
&nbsp; &nbsp; &nbsp;<a href="http://www.opengroup.org/onlinepubs/009695399/functions/time.html"><span style="color: #a61390;">time</span></a> <span style="color: #002200;">=</span> event.timestamp;<br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>forwardToSuper<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">//return self.superview;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">return</span> <span style="color: #002200;">&#91;</span>web hitTest<span style="color: #002200;">:</span>point withEvent<span style="color: #002200;">:</span>event<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">else</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">// Return the superview as the hit and prevent</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">// UIWebView receiving double or more taps</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">return</span> <span style="color: #002200;">&#91;</span>super hitTest<span style="color: #002200;">:</span>point withEvent<span style="color: #002200;">:</span>event<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">&#125;</span><br />
<span style="color: #a61390;">@end</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/disabling-default-zoom-for-uivewview.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>touchBegan/touchEnd in custom UIWebView</title>
		<link>http://www.developers-life.com/touchbegantouchend-in-custom-uiwebview.html</link>
		<comments>http://www.developers-life.com/touchbegantouchend-in-custom-uiwebview.html#comments</comments>
		<pubDate>Sat, 31 Oct 2009 09:56:29 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Private]]></category>
		<category><![CDATA[UIWebView]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[Кодинг]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=618</guid>
		<description><![CDATA[The main disadvantage in the object UIWebView is lack of methods touchBegan and touchEnd. But this question has been settled by some manipulations with privates possibilities:) Thank you Satoshi Nakagawa :) PSWebView.h &#8211; empty 1234#import &#60;UIKit/UIKit.h&#62; @interface PSWebView : UIWebView @end If you need add method touchBegan then make step by step 1. add after [...]]]></description>
			<content:encoded><![CDATA[<p>The main disadvantage in the object UIWebView is lack of methods touchBegan and touchEnd. But this question has been settled by some manipulations with privates possibilities:) Thank you Satoshi Nakagawa :)</p>
<p>PSWebView.h &#8211; empty</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #6e371a;">#import &lt;UIKit/UIKit.h&gt;</span><br />
<br />
<span style="color: #a61390;">@interface</span> PSWebView <span style="color: #002200;">:</span> UIWebView<br />
<span style="color: #a61390;">@end</span></div></td></tr></tbody></table></div>
<p>If you need add method touchBegan then make step by step<br />
1. add after 6 line</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>webView<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIWebView<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>sender tappedBeganWithTouch<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UITouch<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>touch event<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIEvent<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>event;</div></td></tr></tbody></table></div>
<p>2. after 11</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>fireBeganTappedWithTouch<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UITouch<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>touch event<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIEvent<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>event;</div></td></tr></tbody></table></div>
<p>3. add after 31</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>__touchesBegan<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSSet_Class/"><span style="color: #400080;">NSSet</span></a><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>touches withEvent<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIEvent<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>event<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#91;</span>self __touchesBegan<span style="color: #002200;">:</span>touches withEvent<span style="color: #002200;">:</span>event<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">id</span> webView <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>self superview<span style="color: #002200;">&#93;</span> superview<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>touches.count <span style="color: #002200;">==</span> <span style="color: #2400d9;">1</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">&#91;</span>webView respondsToSelector<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>fireBeganTappedWithTouch<span style="color: #002200;">:</span>event<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#91;</span>webView fireBeganTappedWithTouch<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>touches anyObject<span style="color: #002200;">&#93;</span> event<span style="color: #002200;">:</span>event<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
<p>4. after 46</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp;Method targetMethod2 <span style="color: #002200;">=</span> class_getInstanceMethod<span style="color: #002200;">&#40;</span>klass, <span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>touchesBegan<span style="color: #002200;">:</span>withEvent<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp;Method newMethod2 <span style="color: #002200;">=</span> class_getInstanceMethod<span style="color: #002200;">&#40;</span>klass, <span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>__touchesBegan<span style="color: #002200;">:</span>withEvent<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp;method_exchangeImplementations<span style="color: #002200;">&#40;</span>targetMethod2, newMethod2<span style="color: #002200;">&#41;</span>;</div></td></tr></tbody></table></div>
<p>5. and last addition in source before last &#8220;@end&#8221;</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>fireBeganTappedWithTouch<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UITouch<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>touch event<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIEvent<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>event<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">&#91;</span>self.delegate respondsToSelector<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>webView<span style="color: #002200;">:</span>tappedBeganWithTouch<span style="color: #002200;">:</span>event<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/"><span style="color: #400080;">NSObject</span></a><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>self.delegate webView<span style="color: #002200;">:</span>self tappedBeganWithTouch<span style="color: #002200;">:</span>touch event<span style="color: #002200;">:</span>event<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
<p>For touchMoves similar steps. It&#8217;s easy!</p>
<p><span id="more-618"></span></p>
<p>PSWebView.m &#8211; all implementation in this file</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #6e371a;">#import &lt;objc/runtime.h&gt;</span><br />
<span style="color: #6e371a;">#import &quot;PSWebView.h&quot;</span><br />
<br />
<span style="color: #a61390;">@interface</span> <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/"><span style="color: #400080;">NSObject</span></a> <span style="color: #002200;">&#40;</span>UIWebViewTappingDelegate<span style="color: #002200;">&#41;</span><br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>webView<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIWebView<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>sender zoomingEndedWithTouches<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSSet_Class/"><span style="color: #400080;">NSSet</span></a><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>touches event<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIEvent<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>event;<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>webView<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIWebView<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>sender tappedWithTouch<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UITouch<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>touch event<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIEvent<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>event;<br />
<span style="color: #a61390;">@end</span><br />
<br />
<span style="color: #a61390;">@interface</span> PSWebView <span style="color: #002200;">&#40;</span>Private<span style="color: #002200;">&#41;</span><br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>fireZoomingEndedWithTouches<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSSet_Class/"><span style="color: #400080;">NSSet</span></a><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>touches event<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIEvent<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>event;<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>fireTappedWithTouch<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UITouch<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>touch event<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIEvent<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>event;<br />
<span style="color: #a61390;">@end</span><br />
<br />
<span style="color: #a61390;">@implementation</span> UIView <span style="color: #002200;">&#40;</span>__TapHook<span style="color: #002200;">&#41;</span><br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>__touchesEnded<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSSet_Class/"><span style="color: #400080;">NSSet</span></a><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>touches withEvent<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIEvent<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>event<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#91;</span>self __touchesEnded<span style="color: #002200;">:</span>touches withEvent<span style="color: #002200;">:</span>event<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">id</span> webView <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>self superview<span style="color: #002200;">&#93;</span> superview<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>touches.count &gt; <span style="color: #2400d9;">1</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">&#91;</span>webView respondsToSelector<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>fireZoomingEndedWithTouches<span style="color: #002200;">:</span>event<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#91;</span>webView fireZoomingEndedWithTouches<span style="color: #002200;">:</span>touches event<span style="color: #002200;">:</span>event<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">else</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">&#91;</span>webView respondsToSelector<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>fireTappedWithTouch<span style="color: #002200;">:</span>event<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#91;</span>webView fireTappedWithTouch<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>touches anyObject<span style="color: #002200;">&#93;</span> event<span style="color: #002200;">:</span>event<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #a61390;">@end</span><br />
<br />
<span style="color: #a61390;">static</span> <span style="color: #a61390;">BOOL</span> hookInstalled <span style="color: #002200;">=</span> <span style="color: #a61390;">NO</span>;<br />
<br />
<span style="color: #a61390;">static</span> <span style="color: #a61390;">void</span> installHook<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span><br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>hookInstalled<span style="color: #002200;">&#41;</span> <span style="color: #a61390;">return</span>;<br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp;hookInstalled <span style="color: #002200;">=</span> <span style="color: #a61390;">YES</span>;<br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">Class</span> klass <span style="color: #002200;">=</span> objc_getClass<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;UIWebDocumentView&quot;</span><span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp;Method targetMethod <span style="color: #002200;">=</span> class_getInstanceMethod<span style="color: #002200;">&#40;</span>klass, <span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>touchesEnded<span style="color: #002200;">:</span>withEvent<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp;Method newMethod <span style="color: #002200;">=</span> class_getInstanceMethod<span style="color: #002200;">&#40;</span>klass, <span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>__touchesEnded<span style="color: #002200;">:</span>withEvent<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp;method_exchangeImplementations<span style="color: #002200;">&#40;</span>targetMethod, newMethod<span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp;<br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #a61390;">@implementation</span> PSWebView<br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>initWithCoder<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSCoder_Class/"><span style="color: #400080;">NSCoder</span></a><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>coder<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>self <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>super initWithCoder<span style="color: #002200;">:</span>coder<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; installHook<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #a61390;">return</span> self;<br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>initWithFrame<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>CGRect<span style="color: #002200;">&#41;</span>frame<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>self <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>super initWithFrame<span style="color: #002200;">:</span>frame<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; installHook<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #a61390;">return</span> self;<br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>fireZoomingEndedWithTouches<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSSet_Class/"><span style="color: #400080;">NSSet</span></a><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>touches event<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIEvent<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>event<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">&#91;</span>self.delegate respondsToSelector<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>webView<span style="color: #002200;">:</span>zoomingEndedWithTouches<span style="color: #002200;">:</span>event<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/"><span style="color: #400080;">NSObject</span></a><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>self.delegate webView<span style="color: #002200;">:</span>self zoomingEndedWithTouches<span style="color: #002200;">:</span>touches event<span style="color: #002200;">:</span>event<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>fireTappedWithTouch<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UITouch<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>touch event<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIEvent<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>event<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">&#91;</span>self.delegate respondsToSelector<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>webView<span style="color: #002200;">:</span>tappedWithTouch<span style="color: #002200;">:</span>event<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/"><span style="color: #400080;">NSObject</span></a><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>self.delegate webView<span style="color: #002200;">:</span>self tappedWithTouch<span style="color: #002200;">:</span>touch event<span style="color: #002200;">:</span>event<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #a61390;">@end</span></div></td></tr></tbody></table></div>
<p><a href="http://depositfiles.com/files/ywlfgsgdf" target="_blank">Source</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/touchbegantouchend-in-custom-uiwebview.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Rewrite UITabBar and UITabBarItem iPhone</title>
		<link>http://www.developers-life.com/rewrite-uitabbar-and-uitabbaritem-iphone.html</link>
		<comments>http://www.developers-life.com/rewrite-uitabbar-and-uitabbaritem-iphone.html#comments</comments>
		<pubDate>Thu, 08 Oct 2009 09:58:16 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[Private]]></category>
		<category><![CDATA[Rewrite]]></category>
		<category><![CDATA[UITabBar]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=541</guid>
		<description><![CDATA[Вариант 1 Вкратце о чем нужно помнить! Самое главное, если вы используете какие-то переменные из приват фреймверков и для них не прописаны property, обязательно пропишите! Иначе при компиляции на эти переменные будет ругаться компилятор к примеру так: 1234&#34;_OBJC_IVAR_$_UITabBarItem._selectedImage&#34;, referenced from: _OBJC_IVAR_$_UITabBarItem._selectedImage$non_lazy_ptr in UICategory.o ld: symbol&#40;s&#41; not found collect2: ld returned 1 exit status Рассказывать тут [...]]]></description>
			<content:encoded><![CDATA[<p>Вариант 1</p>
<p>Вкратце о чем нужно помнить!<br />
Самое главное, если вы используете какие-то переменные из приват фреймверков и для них не прописаны property, обязательно пропишите! Иначе при компиляции на эти переменные будет ругаться компилятор к примеру так:</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #bf1d1a;">&quot;_OBJC_IVAR_$_UITabBarItem._selectedImage&quot;</span>, referenced from<span style="color: #002200;">:</span><br />
_OBJC_IVAR_$_UITabBarItem._selectedImage$non_lazy_ptr <span style="color: #a61390;">in</span> UICategory.o<br />
ld<span style="color: #002200;">:</span> symbol<span style="color: #002200;">&#40;</span>s<span style="color: #002200;">&#41;</span> not found<br />
collect2<span style="color: #002200;">:</span> ld returned <span style="color: #2400d9;">1</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/exit.html"><span style="color: #a61390;">exit</span></a> status</div></td></tr></tbody></table></div>
<p>Рассказывать тут не очем кроме quartz, но о нем я расскажу в следующем посте подробнее, как появится время. Смотрите исходники, кода немного :), основные файлы ExtendsForTabBar.h и m. Исходники ниже.</p>
<p>Вариант 2</p>
<p>Можно взять за основу UITabBar и создать свой объект а не переписывать методы существующего. Хотя в конечном итоге и в этом случае мы переписываем методы.</p>
<p>Добавив два файла пустого NSObject к примеру с именем MyTabBar. В файле h вместо NSObject напишем UITabBar.<br />
В m файе напишем:</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> drawRect<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>CGRect<span style="color: #002200;">&#41;</span>rect <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;self.frame <span style="color: #002200;">=</span> CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0</span>, <span style="color: #2400d9;">409</span>, <span style="color: #2400d9;">320</span>, <span style="color: #2400d9;">71</span><span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp;UIImage <span style="color: #002200;">*</span>img &nbsp;<span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIImage imageNamed<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;tabbarbg2.png&quot;</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#91;</span>img drawInRect<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0</span>, <span style="color: #2400d9;">0</span>, <span style="color: #2400d9;">320</span>, <span style="color: #2400d9;">71</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span>;<br />
<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
<p>Далее в MainWindow.xib сделать все как на скриншотах, сохранить и скомпилировать.</p>
<p><a href="http://www.developers-life.com/wp-content/uploads/2009/10/1.png" target="_blank"><img src="http://www.developers-life.com/wp-content/uploads/2009/10/1-286x300.png" alt="" title="1" width="286" height="300" class="alignnone size-medium wp-image-542" /></a><br />
<br />
<a href="http://www.developers-life.com/wp-content/uploads/2009/10/2.png" target="_blank"><img src="http://www.developers-life.com/wp-content/uploads/2009/10/2-284x300.png" alt="" title="2" width="284" height="300" class="alignnone size-medium wp-image-543" /></a></p>
<p><a href="http://depositfiles.com/files/fqfj8gv9a" target="_blank">Исходники</a></p>
<p>Чтоб найти еще что-то подобное достаточно набрать: &#8220;Custom Colors UITabBar UITabBarItem&#8221;, &#8220;How to custom UITabBar&#8221; и подобное.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/rewrite-uitabbar-and-uitabbaritem-iphone.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to include ttf fonts in iPhone app</title>
		<link>http://www.developers-life.com/how-to-include-ttf-fonts-in-iphone-app.html</link>
		<comments>http://www.developers-life.com/how-to-include-ttf-fonts-in-iphone-app.html#comments</comments>
		<pubDate>Thu, 30 Jul 2009 10:53:39 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Private]]></category>
		<category><![CDATA[UIFont]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=516</guid>
		<description><![CDATA[Хороший способ подключения шрифтов. Кидаем в ресурсы наш шрифт. Вставляем и выполняем функцию. 12345678910111213141516NSUInteger loadFonts&#40;&#41; &#123; &#160; &#160; &#160;NSUInteger newFontCount = 0; &#160; &#160; &#160;NSBundle *frameworkBundle = &#91;NSBundle bundleWithIdentifier:@&#34;com.apple.GraphicsServices&#34;&#93;; &#160; &#160; &#160;const char *frameworkPath = &#91;&#91;frameworkBundle executablePath&#93; UTF8String&#93;; &#160; &#160; &#160;if &#40;frameworkPath&#41; &#123; &#160; &#160; &#160; &#160; &#160; void *graphicsServices = dlopen&#40;frameworkPath, RTLD_NOLOAD &#124; RTLD_LAZY&#41;; [...]]]></description>
			<content:encoded><![CDATA[<p>Хороший способ подключения шрифтов.</p>
<p>Кидаем в ресурсы наш шрифт. Вставляем и выполняем функцию.</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">NSUInteger loadFonts<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span><br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;NSUInteger newFontCount <span style="color: #002200;">=</span> <span style="color: #2400d9;">0</span>;<br />
&nbsp; &nbsp; &nbsp;<a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/"><span style="color: #400080;">NSBundle</span></a> <span style="color: #002200;">*</span>frameworkBundle <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/"><span style="color: #400080;">NSBundle</span></a> bundleWithIdentifier<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;com.apple.GraphicsServices&quot;</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">const</span> <span style="color: #a61390;">char</span> <span style="color: #002200;">*</span>frameworkPath <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>frameworkBundle executablePath<span style="color: #002200;">&#93;</span> UTF8String<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>frameworkPath<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">void</span> <span style="color: #002200;">*</span>graphicsServices <span style="color: #002200;">=</span> dlopen<span style="color: #002200;">&#40;</span>frameworkPath, RTLD_NOLOAD | RTLD_LAZY<span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>graphicsServices<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #a61390;">BOOL</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">*</span>GSFontAddFromFile<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">const</span> <span style="color: #a61390;">char</span> <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">=</span> dlsym<span style="color: #002200;">&#40;</span>graphicsServices, <span style="color: #bf1d1a;">&quot;GSFontAddFromFile&quot;</span><span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>GSFontAddFromFile<span style="color: #002200;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">for</span> <span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span style="color: #400080;">NSString</span></a> <span style="color: #002200;">*</span>fontFile <span style="color: #a61390;">in</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/"><span style="color: #400080;">NSBundle</span></a> mainBundle<span style="color: #002200;">&#93;</span> pathsForResourcesOfType<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;TTF&quot;</span> inDirectory<span style="color: #002200;">:</span><span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;newFontCount <span style="color: #002200;">+=</span> GSFontAddFromFile<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#91;</span>fontFile UTF8String<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #a61390;">return</span> newFontCount;<br />
<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
<p>Смотрим что у нас появилось</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;%@&quot;</span>,<span style="color: #002200;">&#91;</span>UIFont familyNames<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span>;</div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/how-to-include-ttf-fonts-in-iphone-app.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

