iPhoneはBluetooth Low Energyの制御ができるから,適当なBLEタグとマウスをつなげて,それらを制御するのを作ってみました.
0
iPhoneはBluetooth Low Energyの制御ができるから,適当なBLEタグとマウスをつなげて,それらを制御するのを作ってみました.
Read more
iOS: iPhoneでBluetooth Low Energyを遊んでみたよ
iPhoneはBluetooth Low Energyの制御ができるから,適当なBLEタグとマウスをつなげて,それらを制御するのを作ってみました.
1
iOS: delegateを自作クラスに実装する
UITableViewDelegateなどのデリゲートを自作クラスに実装する方法です.デリゲートを自作できると好きなタイミングで処理やデータの受け渡しが簡単にできるので,覚えておくべき手法の一つです.
(例)カウントダウンする自作クラス MyTimer にて,以下の自作デリゲードを実装してカウントダウン中に他クラスから自身を制御できるようにする.
(b) カウントダウンが終わったときによばれる ( didMyTimerFinished: )
自作クラスのヘッダーにて,protocolを用いてデリゲート名 MyTimerDelegate および,必要なメソッドを宣言して,interfaceにて自デリゲートを持つidを追加する.
デリゲートの各メソッドを書いていく
このサンプルコードです.ライセンスは使った分・得した分だけ,知り合いに飯を奢ること.
Read more
(例)カウントダウンする自作クラス MyTimer にて,以下の自作デリゲードを実装してカウントダウン中に他クラスから自身を制御できるようにする.
(b) カウントダウンが終わったときによばれる ( didMyTimerFinished: )
自作クラスのヘッダーにて,protocolを用いてデリゲート名 MyTimerDelegate および,必要なメソッドを宣言して,interfaceにて自デリゲートを持つidを追加する.
[MyTimer.h]つぎに,メソッドファイルにて,そのデリゲートを好きなタイミングで呼び出す.
#import < foundation / foundation.h >
@class MyTimer;
@protocol MyTimerDelegate
@optional // オプション
-(void)didMyTimerCounted:(MyTimer *)myTimer;
@required // 必須
-(void)didMyTimerFinished:(MyTimer *)myTimer;
@end
@interface MyTimer : NSObject
@property NSInteger counter;
@property id < MyTimerDelegate > delegate;-(void)countDown:(NSInteger)time;
@end
[MyTimer.m]自作デリゲートの実装のこれで終わり.ほかのデリゲートと同様に使えばOK.
#import "MyTimer.h"
@implementation MyTimer
-(void)countDown:(NSInteger)time
{
self.counter = time;
do{
self.counter--;
[self.delegate didMyTimerCounted:self];
}while ( self.counter > 0 );
[self.delegate didMyTimerFinished:self];
}
@end
[MEViewController.h]
#import < UIKit / UIKit.h >
#import "MyTimer.h"
@interface MEViewController : UIViewController < MyTimerDelegate >
{
MyTimer *myTimer_;
}
@end
デリゲートの各メソッドを書いていく
[MEViewController.m]
#import "MEViewController.h"
@implementation MEViewController
- (void)viewDidLoad
{
[super viewDidLoad];
myTimer_ = [[MyTimer alloc] init];
myTimer_.delegate = self;
[myTimer_ countDown:20];
}
-(void)dealloc
{
myTimer_.delegate = nil;
}
-(void)didMyTimerCounted:(MyTimer *)myTimer
{
NSLog(@"%s", __func__);
NSLog(@"counter = %d", myTimer.counter);
}
-(void)didMyTimerFinished:(MyTimer *)myTimer
{
NSLog(@"%s", __func__);
NSLog(@"counter = %d", myTimer.counter);
}
@end
このサンプルコードです.ライセンスは使った分・得した分だけ,知り合いに飯を奢ること.
0
au iPhoneに来たEZホットインフォを解約する
つい先日,迷惑メール同等と名高いEZホットインフォがうちのiPhoneにも届いた.MNPでauに戻ってきて二ヶ月,今まで来てなかったので来ないものだと思っていたのに.GREEのゲームなんかしない,むしろ虫ずが走るので一刻も止めたい.ネットを見ていると,解約は157へ電話してとがあるが,今月?ぐらいからネットからでも解約できるようになった.相手がauとはいえ暗証番号を口頭で伝えるのは違和感を感じるので,後者で解約してみた.
au oneにログインして解約(メルマガの停止)するのだが,そのアカウントとiPhoneを連携しないといけない.しかし,今の仕様では既存アカウントにiPhoneを連携させる方法がない.じゃあ,どうすれば?というと,iPhoneから新規アカウントを申請するしかない(自動で新規アカウントにiPhoneが結びつけられる).au oneメールを使う予定がないので完全に捨てアカだ.新規登録後はメール後半にある解約のリンクを辿っていけば無事に停止できる.電話をした方が簡単だったかも.
なんでこんなキモち悪い仕様なのかと気になったけど,上記の解約ページのURLにmedibaの文字が.あー,あのミログを利用してAppLogで個人情報をブチ抜いてたmedibaさんじゃないですか!.ということで,EZホットインフォがそのmediba絡みなら,そのユーザーへの嫌がらせも納得ですよ.
Read more
au oneにログインして解約(メルマガの停止)するのだが,そのアカウントとiPhoneを連携しないといけない.しかし,今の仕様では既存アカウントにiPhoneを連携させる方法がない.じゃあ,どうすれば?というと,iPhoneから新規アカウントを申請するしかない(自動で新規アカウントにiPhoneが結びつけられる).au oneメールを使う予定がないので完全に捨てアカだ.新規登録後はメール後半にある解約のリンクを辿っていけば無事に停止できる.電話をした方が簡単だったかも.
なんでこんなキモち悪い仕様なのかと気になったけど,上記の解約ページのURLにmedibaの文字が.あー,あのミログを利用してAppLogで個人情報をブチ抜いてたmedibaさんじゃないですか!.ということで,EZホットインフォがそのmediba絡みなら,そのユーザーへの嫌がらせも納得ですよ.
0
iOS: キーボードの言語を調べる方法
iOSアプリのキーボードで今使っている言語(フルキーボード,フリックや数字などの種類ではなく日本語や英語などの言語)を見分ける関数を作った(まあ,種類もその方法で一緒にわかるけど).まだ,それを組み込んだアプリ開発の時間がかかりそうなので非公開(そのアプリがリリースできたら公開予定).もし,その判別方法を一刻も知りたい人で,実際に組み込んでその判定に関するアップルの審査結果を教えてくれる,かつ,これが原因でリジェクトされても怒らない人がいたら,連絡を.
Read more
0
NSErrorの覚え書き
NSErrorを使ったメソッドのエラー処理についての覚え書き.エラーを受け取る必要がないときは,下記の例だと,[self hogehoge:nil]にする.
Read more
@interface MyViewController : UIViewController
-(BOOL)hogehoge:(NSError **)error;
@end
@implementation MyViewController
-(BOOL)hogehoge:(NSError **)error
{
if( 問題が起こったとき )
{
if( error )
{
NSMutableDictionary* errDetails = [NSMutableDictionary dictionary];
[errDetails setValue:@"エラーの原因など" forKey:NSLocalizedDescriptionKey];
*error = [NSError errorWithDomain:@"world" code:200 userInfo:errDetails];
}
return NO;
}
return YES;
}
-(void)main
{
NSError *err = nil;
if ( [self hogehoge:&err] == NO)
{
NSLog(@"%@", [err localizedDescription]);
}
}
@end
登録:
投稿 (Atom)


