想像以上に上手い事やってくれる UIWebView On UIScrollView

UIScrollView上に、WebViewを並べてみた。

どっちかタップが検知されないんじゃないかと思ってたけど、
何もせずにうまいこと行きました。

WebViewのスクロールが終わると、次のWebViewにちゃんと移ります。
クリックしてもWebViewでクリックしたのと同じ扱い。

自前で似たものをつくることになるんだろーなーと思ってたので感動。

////UIViewController

#define WIDTH 320
#define HEIGHT 460

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    UIScrollView *scrollView = [[UIScrollView alloc] init];
    scrollView.frame = CGRectMake(0, 0, WIDTH, HEIGHT);
    [self.view addSubview:scrollView];
    [scrollView release];
    
    scrollView.pagingEnabled = TRUE;
    
    UIWebView *webView = [[UIWebView alloc] init];
    [webView setFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];
    
    UIWebView *webView2 = [[UIWebView alloc] init];
    [webView2 setFrame:CGRectMake(0, HEIGHT,WIDTH, HEIGHT)];
    
    UIWebView *webView3 = [[UIWebView alloc] init];
    [webView3 setFrame:CGRectMake(0, HEIGHT*2, WIDTH, HEIGHT)];
    
    [scrollView setContentSize:CGSizeMake(WIDTH, HEIGHT*3)];
    
    [scrollView addSubview:webView];
    [scrollView addSubview:webView2];
    [scrollView addSubview:webView3];
    
    NSString *urlString = @"http://www.google.com";
    NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    
    NSString *urlString2 = @"http://www.1101.com";
    NSURL *url2 = [NSURL URLWithString:urlString2];
    NSURLRequest *request2 = [NSURLRequest requestWithURL:url2];
    
    NSString *urlString3 = @"http://www.cnn.co.jp";
    NSURL *url3 = [NSURL URLWithString:urlString3];
    NSURLRequest *request3 = [NSURLRequest requestWithURL:url3];
    
    [webView loadRequest:request];
    [webView2 loadRequest:request2];
    [webView3 loadRequest:request3];

    [webView release];
    [webView2 release];
    [webView3 release];
    
}

Processingのタブで作ったclassはインナークラス [Processing]

読んで字のごとく。
Processingのタブで作ったclassはインナークラス。

最初は、タブごとに別ファイルという認識だったけど、
タブに作ったclassはインナークラスになる。

他人の作ったpdeを部分的に使って・・・ということをやると結構混乱するかも。

Androidのプロジェクト名・パッケージ名の変更 [Android]

しばらくやってないと忘れるので、備忘録。
Androidアプリのプロジェクト名、パッケージ名の変更。

プロジェクト名:OldApp
パッケージ名:com.myapp.old

この時点で、

OldApp/src/com/myapp/old/...   

という状態。

これを、

プロジェクト名:NewApp
パッケージ名:com.myapp.new

に変更する。

まず、ディレクトリ(フォルダ)ごとコピーして、名前を変更する。

NewApp/src/com/myapp/old/...

このプロジェクトの root directoryだけが変わっている状態。

Eclipse起動する。

File > import > General > Existing Projects into Workspace

で、Next

Select root directory
でコピーしたファイル1式の、Directoryを選択。

AndroidManifest.xml の パッケージ名を変更する。

package="com.myapp.new"

この時点で gen が変わる。

srcの、
com.myapp.old を右クリックで、 Refactor > Rename
New name に、 com.myapp.new
で、 Upadate references と Rename subpackages にチェック。 > OK

NewApp/src/com/myapp/new/...

import のところもちゃんと変わってる。

Objective-Cのメモリ管理で自信がなくなる瞬間は誰しも必ずあると思う。 [iOS]

「エキスパート Objective-Cプログラミング 〜 iOS/OS Xのメモリ管理とマルチスレッド 〜」という本を読んでたところ、
「自分が生成したオブジェクトの所有者は自分である」という表現で、自分がなんだかわからなくなって、自分探しをしてみました。

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
    
    @autoreleasepool {
        
        NSObject *object1 = [[NSObject alloc] init];
        NSObject *object2 = nil;
        
        object2 = object1;
		
        [object1 release];
        
        NSObject *object3 =nil;
        
        object3 = object2;
		
        [object2 release];

    }
    return 0;
}
import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
    
    @autoreleasepool {
        
        NSObject *object1 = [[NSObject alloc] init];
        NSObject *object2 = nil;
        
        object2 = object1;
		
        [object2 release];
        
        NSObject *object3 =nil;
        
        object3 = object2;
		
        [object3 retain];
        
        [object1 release];
        
    }
    return 0;
}

結構、どっちがどういうことか、わからない人いるんじゃないの?と思った次第です。

default.properties と project.properties [Android]

どちらが何なのかまだ把握してないけど、

人様からもらったコードで、java.utilですら、「そんなものありません」と怒られててエラーが出ている。
Project > Property > Android と見て行ったら、Androidのところで Invalid のエラー。

自分で作ったプロジェクトでは、defalut.properties
もらったコード(エラーがでているもの)が、project.properties

となっている。中身の形式は一緒なので、コピって、名前をdefaultにしてあげて、
Android Tools > Fix Project Properties
を押して、eclipse再起動。

これでビルドができた。 Fix Project Propertiesはいらないかも。

SDKのバージョン違いなのかなーという感じがしてますが、
今度調べるということで。