質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Q&A

解決済

1回答

3208閲覧

UITextViewの改行時の判定方法について

mm--_--mm

総合スコア113

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

0グッド

0クリップ

投稿2016/12/19 02:48

いつもお世話になっております。

現在、textview上に文字を入力して、それを送信するという機能を実装しています。
そこで、入力欄が空だった時と、改行しかされなかった時(文字が何も入力されてない状態でキーボードの改行ボタンを押した時)は送信ボタンを無効にしたいと考えています。

そこで、入力欄が空かどうかの判定はできたのですが、改行しかされなかった時の判定がうまくいきません...
この場合はどのような判定処理を書けばよろしいのでしょうか?

わかる方おりましたら教えていただけると幸いです。
よろしくお願いいたします。

下記コードが試してみても正常に動かなかったコードです。

objective

1if(_MessageView.text.length == 0 || _MessageView.text == @"\n"){ //この条件で試してみても改行時は無効にすることができませんでした... 2 _SendBtn.enabled = NO; 3 } 4 else{ 5 _SendBtn.enabled = YES; 6 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2016/12/19 02:53 編集

(解決しました)
mm--_--mm

2016/12/19 02:55

文字が何も入力されてない状態で、キーボードの改行ボタンを押しただけの時を「改行しかされなかった時」と表現しております...
fuzzball

2016/12/19 02:58 編集

改行した時点で送信される仕様なのでしょうか?(複数行の入力が出来るかどうか?ということ)
mm--_--mm

2016/12/19 02:59

いえ、文字を入力した時点で送信ボタンが有効になるので自分で送信ボタンを押すと送信される仕様です。なので改行ボタンを押しただけでも有効になってしまい困っているという状況です...
fuzzball

2016/12/19 03:01

あー、理解しました。改行以外の文字が入力されるまでは送信ボタンが無効、ということですね。
fuzzball

2016/12/19 03:01

質問の判定文はどこで実行されているのでしょうか?
mm--_--mm

2016/12/19 03:07

そうですね。textViewDidChange内とshouldChangeTextInRange内で判定してます。
guest

回答1

0

ベストアンサー

改行コードでトリミングしてから長さチェックします。

objectivec

1NSString *tmp = [_MessageView.text stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]; 2//NSLog(@"[%@]", tmp); 3_SendBtn.enabled = (tmp.length > 0);

ちなみに

改行1個だけなら@"\n"で判定してもいいですが、文字列比較の方法が間違っています。

objectivec

1//× warning出てませんか? 2_MessageView.text == @"\n" 3 4//○ 5[_MessageView.text compare:@"\n"] == NSOrderedSame

投稿2016/12/19 04:13

編集2016/12/19 04:20
fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mm--_--mm

2016/12/19 04:46

ご回答いただきありがとうございました!無事に解決しました!ちなみにif文内の_MessageView.text == @"\n"はwarningは出てませんでした..
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問