わたしのための逆引きobjective-c

ブログ名のとおり、わたしの勉強したことをまとめていますので、他の方は分かりづらいかもしれません

textViewのサンプルコード

f:id:chumix:20131007103954p:plain

 

 

-----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のところに記入すると初期値で入力されている言葉になる

    

    //自動リンク作成(92日テキストビュー)

    _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