Hatena::Groupiphone-dev

BLUEPALACE.COM iPhone専科

2008-11-12touch系 #2 このエントリーを含むブックマーク

お金を払えば touch できるお店があるんですよね。

嫌いじゃないです…と、開発 blog に書く事ではないのです。

で、件の touch 系ですが、実験しててわかりました。

つか、ドキュメントをちゃんと読めば載っている事なのかもしれないが…

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
	UITouch *touch = [touches anyObject];
	CGPoint location = [touch locationInView:self];

やらで touch 系オブジェクトプロパティを取得できるんですが、コレには

ちょっとした罠がありましてー

右や左にスライドさせた時、タップ(1クリック)した時の取得は前回書きましたが、

この"タップ(1クリック)" って判断を touchBegan でやってしまうと良くない。


あくまでも、touchesEnded で完結させねばならない。

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
	
	UITouch *touch = [touches anyObject];
	CGPoint location = [touch locationInView:self];
	
	if ([touch tapCount] == 1) {
	//1回タップの処理いろいろ
	…
	}

	// 右にスライドの処理うんぬん
	if (pointX < location.x - 30) {
		[mesArray removeObjectAtIndex:0];
		[mesArray addObject:@"glided 2 the right ->"];
		… まぁ色々書く
}

こんなふうに(絵描きのボブ風)

スライドとして判断したい時も、 touchBegan で if ([touch tapCount] == 1) { やっちまうと

touchCount が 1 となり、 タップの処理が走り touchEnded でもスライドの処理をしてしまう。

2重に処理しちまうので区別ができない。

だから、touch 系の判断処理は全て touch Ended で!

touchBegan では初期位置を取得するだけで!
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
	UITouch *touch = [touches anyObject];
	
	CGPoint location = [touch locationInView:self];
	pointX = location.x;
	pointY = location.y;
	// もうコレだけでいいや!
}

ね、簡単でしょ?(絵描きのボブ風)

簡単だよ、ドキュメント読めよ>自分

と、何度思っても読まないんですよね。うへへへへ

まぁ touchEnded だけでも後々問題が出そうではあるんだけど…

VB だかの mouseDown mouseUp でハマった事を思い出しました。

2008-11-11あほうなミスなど このエントリーを含むブックマーク

帰宅後の2時間がコーディング勝負の私です。

今日もテストコードだか本番コードだかを弄ってましたが、あほうなミスがありました。

戒めとして書いておきたいと。

		UIColor * txtcolor = [[UIColor alloc] initWithRed:1 green:0 blue:0 alpha:0];
		txtcolor = [[UIColor alloc] initWithRed:1 green:0 blue:0 alpha:1];
		testmLabel1.textColor = txtcolor;		
		testmLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(0.0f,0.0f,150.0f,15.0f)];		
		testmLabel1.backgroundColor = bgcolor;
		testmLabel1.textAlignment = UITextAlignmentCenter;
		[testmLabel1 setFont:[UIFont systemFontOfSize:12]];
		testmLabel1.center = CGPointMake(100.0,50.0);

あれ? テキストに色が付かねーぞ? とか思っていたのですが。

ああ、そりゃそうだ。


		testmLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(0.0f,0.0f,150.0f,15.0f)];

これより前(オブジェクトが出来る前)にプロパティを書いても意味なしだもんね。

なので、

		testmLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(0.0f,0.0f,150.0f,15.0f)];		
		testmLabel1.textColor = txtcolor;		
		testmLabel1.backgroundColor = bgcolor;

こうすると。

エラーメッセージの出ないエラーだった。ああ、怖い


そして、 cocoa に do until が見当たらないんだが…ないのだろうか?

for や do while の条件式 (|| とか論理演算子組み合わせ)でなんとかなるんだけど、

do until があればなぁ…

そんなこんなで、まだまだ人様に披露できるアプリは遠い…

明日は、もう一方のロジックを組まなきゃ。

LeonardoLeonardo2012/02/07 03:54I'm not wtorhy to be in the same forum. ROTFL

hltktnqphltktnqp2012/02/07 18:10wCYgz1 <a href="http://dsoamrkfxfaw.com/">dsoamrkfxfaw</a>

rputdirputdi2012/02/09 20:18dQr8ZI , [url=http://spqlcatkqxrz.com/]spqlcatkqxrz[/url], [link=http://xznmnvfcizfs.com/]xznmnvfcizfs[/link], http://mpbgxgybxaha.com/

lkpbddtjlkpbddtj2012/02/11 02:06ht5PUJ <a href="http://adrqawnhcutx.com/">adrqawnhcutx</a>

euaeaobvgveuaeaobvgv2012/02/12 03:44KIam8J , [url=http://tblvqlvlrvrs.com/]tblvqlvlrvrs[/url], [link=http://fiasroeqbqxz.com/]fiasroeqbqxz[/link], http://sngqrqocghka.com/

2008-11-10文字列操作 このエントリーを含むブックマーク

文字列操作もいよいよ大詰め…って 何を作ってるか書いてないので

さっぱり感がバリバリですが。

サブストリング取得の substringWithRange を使ってみています。

が、これ Index0番から文字列の最後方向にしか取れないのか…な?

mArray objectAtIndex: 0 に "abcdefghijk" と格納されているものを

strtemp1 = [[mArray objectAtIndex: 0] substringWithRange:NSMakeRange(2, 3)];

とでもすりゃ "cde" が取れますが、逆向きって取れないもんでしょうかね?

"fed" とか "cba" とか…

リファレンスを見るも、それらしいのが探せなかったので for で(笑)

for で 1 文字づつ取ってきて繋げるっと。


本家にもちょろっと書きましたが、文字列を繋げるのは

str1 = str 1 + str2 とかできやしねぇw やらせろよ! > objc

ま、文字列操作は別段難しくなくて

strtemp2 = [strtemp2 stringByAppendingString:strtemp1];

こんなん書いてけば strtemp2 の後ろに strtemp1 がくっついてくる。

たのcoco の 227p ぐらいんとこ。

さて、

NSArray やら調べれば逆文字列の何かがあるかもしれないけど、コードで解決!

…どんどんダメな人 ダメなiPhoneアプリになってゆくのだろうか?

11月末にはプロトのプロトぐらい仕上げたいところです。

CueNargaCueNarga2008/11/11 12:21配列ならば NSArray の reverseObjectEnumerator があるみたい。
但し、要素を逆向きに走査するんだそうさ(笑)

KaidenKaiden2011/05/14 13:29That’s raelly shrewd! Good to see the logic set out so well.

etacawysjnetacawysjn2011/05/14 21:25CkDiGc <a href="http://edgvsjsgksqc.com/">edgvsjsgksqc</a>

dcwmrdqedcwmrdqe2011/05/17 13:29roly3M <a href="http://xmakdugwlyla.com/">xmakdugwlyla</a>

rrxrzjhrrxrzjh2011/05/29 23:19dUjDrw , [url=http://upvojmfhlrur.com/]upvojmfhlrur[/url], [link=http://ienkuffmiysa.com/]ienkuffmiysa[/link], http://ivnprxsgqtou.com/

2008-11-07touch系 このエントリーを含むブックマーク

タッチ… 岩崎良美を思い出してしまうのは年のせいでしょう。

そんなこんなで touch 系のイベントのテストをやってます。

右、左、または下にスライドした際にそれぞれ「右よ!」「左よ!」と

パチスロ北斗のように判別したいのです。

mutableArray 程悩まずできました。サンプルのお陰です。


touch の場所を確保する為に変数を作っておきます。

.h には

	//check location
	CGFloat pointX;
	CGFloat pointY;

とまぁこんなん作っておきます。


で、

.m の touchesBegan と touchesEnded にそれぞれ仕込みました。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
	UITouch *touch = [touches anyObject];
	
	// 開始場所の記録
	CGPoint location = [touch locationInView:self];
	pointX = location.x;
	pointY = location.y;
	…他の処理があれば
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
	
	UITouch *touch = [touches anyObject];
	CGPoint location = [touch locationInView:self];
	if (pointX < location.x - 30) {
		[mesArray removeObjectAtIndex:0];
		[mesArray addObject:@"glided 2 the right ->"];
	}
	
	if (pointX > location.x + 30) {
		[mesArray removeObjectAtIndex:0];
		[mesArray addObject:@"<- glided 2 the left"];
	}
	
	if (pointY < location.y - 30) {
		[mesArray removeObjectAtIndex:0];
		[mesArray addObject:@"VV glided 2 the bottom VV"];
	}


	mesLabel1.text = [mesArray objectAtIndex:0];
	…他、まぁ色々書く

if if if なのはご愛嬌と言う事で。

ナナメに入っちゃうのもご愛嬌で。

こんな感じかしらね〜

AdianaAdiana2011/05/15 05:47That's a mold-breaker. Great thiinkng!

xhdndpjuixhdndpjui2011/05/15 13:099VmiNj <a href="http://mcrxmqszbttx.com/">mcrxmqszbttx</a>

gnkvyqjvczgnkvyqjvcz2011/05/16 22:48GHHupe , [url=http://hrwmcemanoew.com/]hrwmcemanoew[/url], [link=http://vvdaazprotxk.com/]vvdaazprotxk[/link], http://dtnkiyuwsodg.com/

dtphomukdtphomuk2011/05/24 23:20ajr3KR <a href="http://oqvgluutesgn.com/">oqvgluutesgn</a>

nqhdobebnqhdobeb2011/05/30 00:20U7sNtx , [url=http://hcznzbovunyk.com/]hcznzbovunyk[/url], [link=http://jqhwaqsjbvuq.com/]jqhwaqsjbvuq[/link], http://quibgapirnov.com/

fevxjboijyfevxjboijy2013/11/24 02:12sxghwjqipof.efw, <a href="http://www.hujsazmicj.com/">kztftlorgo</a> , [url=http://www.pvvdaaxywd.com/]ixopxodogy[/url], http://www.qikwssbook.com/ kztftlorgo

2008-11-05NSMutableArray #3 このエントリーを含むブックマーク

retain だ。世の中 retain さえしときゃ良いんだ。

と、銀魂大好きなオッサンですが、会社から帰って速攻で NSMutableArray と格闘しました。

知らない外人さんが同じように悩んで答えをもらっていた BBS を見たので早速実装します。

.m には

- (id)init
{
	mesArray = [[NSMutableArray arrayWithObjects:@"a",@"b",@"c",nil] retain];
    return self;
}

まあこんなん書きます。 24時間戦える retain を書きます。コレ重要


で、


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
	UITouch *touch = [touches anyObject];
	if ([touch tapCount] == 2) {
		
		// 配列での操作にしてみる
		// 0番削除
		[mesArray removeObjectAtIndex:0];
		// 配列番号2 に本動作を追加
//		[mesArray replaceObjectAtIndex:2 withObject:@"Doble Clicked!"];
		[mesArray addObject:@"Doble Clicked!"];

		
		// label に表示
		mesLabel3.text = [mesArray objectAtIndex:2];
		mesLabel2.text = [mesArray objectAtIndex:1];
		mesLabel1.text = [mesArray objectAtIndex:0];
		…まぁ色々書く

ダブルクリック(つか2回タッチ)をこんなんで入れ替える。

荻原本だか、たのココだかには remove すっと詰められるとあったので…

「削って追加すりゃいいんじゃね?」的に 0番を remove 2番を追加してやりゃ良かった。

0番を削った後に replaceObjectAtIndex:2 とかやっちまうと 2番がねーから怒られる。

自分が作りたい物は至極単純な処理の繰り返しでできるはず。

なので、また一歩近づいた気がします。

プログラムなんざ、入力・演算・出力 で大体上手くいくんだ。

ミニマム実装さえできてくれば… つか、つくづくオブジェクト指向っぽくないですねw

MuhouMuhou2009/03/08 23:42おなじくMutableArrayではまっちょりました。
「なんで、addobjectしてんのにふえねーんだよ。」

と思ってましたが、retainで一度確保しないといけないんですねぇ。

有用な記事ありがとうございました。

dada2010/06/08 14:33僕も同じところでだいぶはまってました。
retainの書き方が具体的で死ぬほど助かりました。
本当にありがとうございます。

SymonaSymona2011/05/14 14:25It's spooky how clever some ppl are. Thnaks!

dxermldymgdxermldymg2011/05/14 22:42hd9cnj <a href="http://ttgykbcbnfcc.com/">ttgykbcbnfcc</a>

uelwnpuuwgxuelwnpuuwgx2011/05/15 21:39nomvu9 , [url=http://aztllmpxyoij.com/]aztllmpxyoij[/url], [link=http://rrapgyjtfhvz.com/]rrapgyjtfhvz[/link], http://gdubbdemmrdo.com/

ibycumpcibycumpc2011/05/17 12:28A5qNj5 <a href="http://yhnzgwlajbmz.com/">yhnzgwlajbmz</a>

chyseedochyseedo2011/05/29 23:34rb5IRM , [url=http://cjsqoloyjomj.com/]cjsqoloyjomj[/url], [link=http://qzyhdaucreks.com/]qzyhdaucreks[/link], http://zgfkdxmvwfub.com/