0

1 つのテキスト ビューで提供される電子メールにデータを送信するアプリケーションのような電子メールを実装しました。このために、次のことを行いました。入力された各文字で、基準文字列を準備し、textView のすぐ下のポップオーバーでUITextView開きます。事前入力されたデータ ソースからフィルタリングされたデータを表示します。ユーザーがメールを選択すると、その名前が、コントローラーの UITextView とポップオーバーの両方を保持する親メイン ビューコントローラーに渡されます。Wehn メイン ビューはメール文字列を受け取り、そのテキストを に追加します。私の問題は、現在のテキストに電子メールを追加して単純なテキストを設定し、電話をかけると、カーソルが点滅することです。しかし、キー値を持つメソッドを使用して HTML 文字列を設定すると、「ContentToHTMLStringUITableViewControllerTableViewControllerTableViewControllerUITableViewUITextViewbecomeFirstResponderUITextViewUITextView setValue:forKey"その後、テキストの最後でカーソルが点滅しません.UITextViewをもう一度クリックすると、カーソルだけが表示されます.

この問題に関する提案/意見をお寄せください。UITextViewテキストをに設定する前に、UITableView コントローラーを保持するポップオーバー コントローラーを閉じることに注意してください。

ここでは、ユーザーが UITableView からメール ID を選択したときに呼び出される 2 つのメソッドを追加しました。詳細が必要な場合はお知らせください。ここで完全なコードを共有することはできないことに注意してください。

    -(NSString*) GetHTMLStringFromString:(NSString*)text
{
    NSString *htmlTag = @"<html>";
    NSString *htmlEndTag = @"</html>";
    NSString *aHrefTag = @"<a href=\"\">";
    NSString *aHrefTagEnd = @"</a>";
    NSString *finalHtmlString = htmlTag;
    NSArray *stringChunks = [text componentsSeparatedByString:@";"];
    for(NSUInteger index = 0; index < stringChunks.count -1;index++)
    {
        finalHtmlString = [finalHtmlString stringByAppendingString:aHrefTag];
        finalHtmlString = [finalHtmlString stringByAppendingString:[stringChunks objectAtIndex:index]];
        finalHtmlString = [finalHtmlString stringByAppendingString:aHrefTagEnd];
        finalHtmlString = [finalHtmlString stringByAppendingString:@";"];
    }
    finalHtmlString = [finalHtmlString stringByAppendingString:htmlTag];
    NSLog(@"\n\nFinal Html String: %@ \n\n",finalHtmlString);
    return finalHtmlString;
}

-(void)HandleUserNameSelected:(NSString*)name
{
    NSLog (@" %s Selected Name: %@\n",__PRETTY_FUNCTION__,name);
    NSString *completeString = self.textView.text;
    //NSArray *namesArray= [completeString componentsSeparatedByString:@";"];
    NSString *userName = @"";
    NSLog(@"Calling FindCriteria from %s",__PRETTY_FUNCTION__);
    userName  = [self FindCriteriaFromString:completeString];
    //NSLog(@"Last username:%@",userName);
    NSRange selectionRange = [completeString rangeOfString:userName options:NSBackwardsSearch];
    //NSRange endselectionRange = [completeString rangeOfString:completeString options:NSBackwardsSearch];
    //NSLog(@" start pos:%d   end pos:%d",selectionRange.location,endselectionRange.length);
    //textView.selectedRange = selectionRange;
    //UITextPosition *start = [textView positionFromPosition:textView.beginningOfDocument offset:selectionRange.location-1];
    //UITextPosition *end = [textView positionFromPosition:textView.beginningOfDocument offset:endselectionRange.length];
    //UITextRange *range = [textView textRangeFromPosition:start toPosition:end];

    NSLog(@"\n\n Total Length %d selction range location %d and length %d \n \n",completeString.length,selectionRange.location,selectionRange.length);
    if((selectionRange.location + selectionRange.length +1) > completeString.length)
    {
        completeString = [completeString stringByReplacingCharactersInRange:selectionRange withString:[name stringByAppendingString:@";"]];
    }
    else
    {
        completeString = [completeString stringByReplacingCharactersInRange:selectionRange withString:name];
    }
    NSString *htmlStr = [self GetHTMLStringFromString:completeString];
    //htmlStr = [htmlStr stringByAppendingString:@" abc"];
    if(self.isSelectionListOpened)
    {
        [self.popController dismissPopoverAnimated:NO];
        self.isSelectionListOpened = NO;
    }
    //self.textView.editable = YES;
   // [self.view becomeFirstResponder];
    //self.textView.text = [self.textView.text stringByAppendingString:@""];
    [self.textView becomeFirstResponder];
    self.textView.editable = YES;
    //NSString *htmlString = [NSString stringWithFormat:@"<html><a href=\"\">%@</a></html>", htmlStr];
    [self.textView setValue:htmlStr forKey:@"ContentToHTMLString"];
    [self.view becomeFirstResponder];
    //self.textView.text = [self.textView.text stringByAppendingString:@""];
    [self.textView becomeFirstResponder];
    self.textView.editable = YES;
   // self.textView.text = completeString;





}
4

0 に答える 0