UITextView
に含まれるユーザー インタラクションを処理する方法は次のUITableViewCell
とおりです。
1) 、およびUIViewController
に準拠する必要があります。UITableViewDataSource
UITableViewDelegate
UITextViewDelegate
#import <UIKit/UIKit.h>
@interace MyExampleController : UIViewController <UITableViewDataSource, UITableViewDelegate, UITextViewDelegate>
2) 最初に、テキスト ビューのuserInteractionEnabled
プロパティはNO
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *textViewCellIdentifier = @"MyTextViewCellIdentifier";
MyTextViewViewCell *cell = [tableView dequeueReusableCellWithIdentifier:textViewCellIdentifier];
if (!cell)
{
// ... do your stuff to create the cell...
cell.textView.userInteractionEnabled = NO;
cell.textView.delegate = self;
}
// do whatever else to set the cell text, etc you need...
return cell;
}
3) テキスト ビュー セルがUITableViewDelegate
メソッドを介してタップされたかどうかを確認します。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
BOOL isTextViewCell = ... // do your check here to determine if this cell has a text view
if (isTextViewCell)
{
[[(MyTextTableViewCell *)cell textView] setUserInteractionEnabled:YES];
[[(MyTextTableViewCell *)cell textView] becomeFirstResponder];
}
else
{
// ... do whatever else you do...
}
}
4) \n
textView がファーストレスポンダーを辞任するタイミングを決定するために確認します (ユーザーがreturn
キーを押したときに渡されます)。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if ([text rangeOfString:@"\n"].location != NSNotFound)
{
[textView resignFirstResponder];
textView.
return NO;
}
return YES;
}
5) テキスト ビューが終了した後 (編集を終了)、テキストをモデルに保存します。
- (void)textViewDidEndEditing:(UITextView *)textView
{
NSString *text = textView.text;
// do your saving here
}
これは主にその場で書いたものなので、小さなエラーがいくつかあるかもしれませんが、うまくいけば大まかなアイデアを得ることができます.
幸運を。