Home > iPhone > iPhone UITextView 改行ボタンを完了ボタンに

iPhone UITextView 改行ボタンを完了ボタンに

  • Posted by: goron
  • 2010年4月 6日 21:48
  • iPhone

久しぶりにiPhoneネタです。
UITextFieldはいろいろ気が利いていて使いやすのですが、
複数行の入力には対応していないみたいです。(残念)
複数行となると、UITextViewを使います。

UITextViewですと、UITextFieldのようにReturnKeyで入力完了を受け取ることができないので、ナビゲーションバーに「完了」ボタン等を付けていました。UITextFieldと同じ動きがクライアントの要求だったのでとても困っていたのですが、すてきな記事を見つけました。

How to Dismiss the Keyboard when using a UITextView

ポイントは、UITextViewDelegateの
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

UITextViewで入力されたキーをキャッチ、改行コード(\n)の場合は、完了とみなす。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
	
    if ([text isEqualToString:@"\n"]) {
	[textView resignFirstResponder];
        return NO;
    }
	return YES;
}


UITextViewをinitした後に、
textview.returnKeyType = UIReturnKeyDone;
textview.scrollEnabled = NO;

としておくと、「改行」ボタンは「完了」ボタンに代わり、スクロールもしなくなります。
あとは、placeholderと×ボタンを付けられれば、textfieldみたいに使えるんだけどなぁ。

追記:ついでに文字数制限
上記のdelegateに付け足せばできる。
追記:ご指摘を頂きまして修正しました。

#define TEXT_LIMIT_NUM 40 //40文字まで(半角全角の判別はしていない)
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
	
    if ([text isEqualToString:@"\n"]) {
	[textView resignFirstResponder];
        return NO;
    }else{
	if (range.location + range.length + [text length] <= TEXT_LIMIT_NUM) {
		if ([textView.text length] + [text length] - range.length <= TEXT_LIMIT_NUM) {
			return YES;
		}else{
			return NO;
		}
    }
}


下記を参考にしました(追記: 間違ってるかもです)
UITextFieldで文字数制限をする


Clip to Evernote

Comments:0

Comment Form

Trackbacks:0

TrackBack URL for this entry
http://www.hirano-dept.com/mt/mt-tb.cgi/93
Listed below are links to weblogs that reference
iPhone UITextView 改行ボタンを完了ボタンに from 袖触れ合うも多少の縁

Home > iPhone > iPhone UITextView 改行ボタンを完了ボタンに

Profile

iPhone/iPad開発 web制作:平野百貨店
iPhone/iPad開発・web制作・映像制作をしている平野百貨店の店長個人の覚書です。
ご意見・ご感想などお問合せはコチラからどうぞ。

※最近ツッコミをもらうので一応書いておきます。ブログのタイトル「袖触れ合うも多少の縁」はわざとです。正確には「袖振り合うも多生の縁」が正解です。

Search
iPhone Apps






RSS
リンク
のこぎりそうの日記

Return to page top