2010年9月2日木曜日

クラスの調査

objective-cで、あるオブジェクトがどのクラスに属しているかを調べる方法です。


こんな感じのようです。
- (void)method:(id)object
{
    // objectがNSStringクラスかどうかを確認
    if ([object isKindOfClass:[NSString class]]) {
      // NSStringクラスの場合
      ...
    }

編集が終わったらキーボードを閉じる

iPhoneのソフトウェアキーボードを閉じる方法です。

UITextFieldにフォーカスが当たるとソフトウェアキーボードが出てきます。
キーボードの改行ボタンを押すと、UITextFieldにUIControlEventEditingDidEndOnExitイベントが飛んできますので、それを捕まえてUITextFieldからフォーカスを外してあげます。
フォーカスが外れるとキーボードが閉じ、めでたしめでたし。

コードはこんな感じです。resignFirstResponderメソッドを呼ぶことでUITextFieldからフォーカスを外してます。

- (void)viewDidLoad {
    UITextField *textField = [[[UITextField alloc]
                               initWithFrame:CGRectMake(10, 10, 200, 31)]
                              autorelease];
    textField.borderStyle = UITextBorderStyleRoundedRect;
    [textField addTarget:self
                  action:@selector(editingDidEnd:)
        forControlEvents:UIControlEventEditingDidEndOnExit];
    [self.view addSubview:textField];
}

- (void)editingDidEnd:(id)sender {
    UITextField *textField = (UITextField *)sender;
    [textField resignFirstResponder];
}

Interface Builderで同じ事を行う場合は、UITextFieldの「Did End on Exit」というイベントにアクションを設定してあげます。