textViewのサンプルコード
-----ViewController.hに記述
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITextViewDelegate>
{
UITextView *_textView;
}
@end
-----ViewController.mに記述
#import "ViewController.h"
#define BTN_START 0
#define BTN_END 1
#define BTN_SHOW 2
#define EDITABLE 3
#define TEXTFIEL 4
@interfaceViewController ()
@end
@implementation ViewController
//アラート表示
- (void)showAlert:(NSString*)title text:(NSString*)text
{
UIAlertView *alert = [[[UIAlertViewalloc] initWithTitle:title message:text delegate:nilcancelButtonTitle:@"OK"otherButtonTitles:nil] autorelease];
[alert show];
}
//テキストビューの生成
- (UITextView*)makeTextView:(CGRect)rect text:(NSString*)text
{
UITextView *textView = [[[UITextView alloc] init] autorelease];
[textView setFrame:rect];
[textView setText:text];
[textView setKeyboardAppearance:UIKeyboardAppearanceDefault];
[textView setKeyboardType:UIKeyboardTypeDefault];
[textView setReturnKeyType:UIReturnKeyDefault];
return textView;
}
//テキストボタンの生成
- (UIButton*)makeButton:(CGRect)rect text:(NSString*)text tag:(int)tag
{
UIButton *button = [UIButtonbuttonWithType:UIButtonTypeRoundedRect];
[button setFrame:rect];
[button setTitle:text forState:UIControlStateNormal];
[button setTag:tag];
[button addTarget:selfaction:@selector(clickButton:) forControlEvents:UIControlEventTouchUpInside];
return button;
}
- (void)viewDidLoad
{
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//ビュー作成
UIView *view = [[[UIViewalloc] initWithFrame:CGRectMake(0,0,300,100)] autorelease];
[view setBackgroundColor:[UIColordarkGrayColor]];
[self.view addSubview:view];
[self.view endEditing:YES];
//テキストビューの生成
_textView = [[selfmakeTextView:CGRectMake(1,1,298,98) text:@"http://www.may-press.com\n東京都中野区"] retain];//textのところに記入すると初期値で入力されている言葉になる
//自動リンク作成(9月2日テキストビュー)
_textView.dataDetectorTypes = UIDataDetectorTypeAll;
[_textViewsetDelegate:self];
[self.view addSubview:_textView];
//編集開始ボタンの生成
UIButton *btnStart = [self makeButton:CGRectMake(0,110,90,40) text:@"編集開始" tag:BTN_START];
[self.view addSubview:btnStart];
//編集完了ボタンの生成
UIButton *btnEnd = [self makeButton:CGRectMake(100,110,90,40) text:@"編集完了" tag:BTN_END];
[self.view addSubview:btnEnd];
//表示ボタンの生成
UIButton *btnShow = [self makeButton:CGRectMake(200,110,90,40) text:@"表示" tag:BTN_SHOW];
[self.view addSubview:btnShow];
//編集不可ボタンの生成
UIButton *btnEditable = [self makeButton:CGRectMake(0,160,90,40) text:@"編集不可" tag:EDITABLE];
[self.view addSubview:btnEditable];
}
//メモリ解放
- (void)dealloc
{
[_textViewrelease];
[super dealloc];
}
//テキスト変更時に呼ばれる
- (BOOL)textView:(UITextView*)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text
{
//最大140文字制限
if( text.length>0 && textView.text.length+text.length>140 ){
return NO;
}
returnYES;
}
//ボタンクリック時のイベント処理
- (IBAction)clickButton:(UIButton*)sender
{
if( sender.tag == BTN_START ){
[_textViewbecomeFirstResponder];
}else if (sender.tag == BTN_END ){
[_textViewresignFirstResponder];
}else if (sender.tag == BTN_SHOW ){
[self showAlert:@"" text:[NSString stringWithFormat:@"テキストビューの文字列\n%@" ,_textView.text]];
}else if (sender.tag == EDITABLE ){
_textView.editable =! _textView.editable;
// if( _textView.editable == YES ){
// _textView.editable = NO;
// }else{
// _textView.editable = YES;
// }
}
}
//背景をタッチしたらキーボードを隠す
- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
{
[self.view endEditing:YES];
}
//NSLogで選択した範囲を文字数と文字を表示する
- (void)textViewDidChangeSelection:(UITextView *)textView
{
NSRange range = textView.selectedRange;
NSString *moji = [textView.textsubstringWithRange:range];//substringWithRangeを使うと指定した範囲の文字の取り出しができる(文字を取り出す objective-c で検索)
NSLog(@"選択範囲は%dから%d文字です。文字は%@です" , range.location , range.length , moji);
}
- (void)didReceiveMemoryWarning
{
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end