আমি কি ইউআইটিেক্সটভিউতে স্বয়ংক্রিয় সনাক্ত হওয়া লিঙ্কগুলির রঙ পরিবর্তন করতে পারি?


115

আমার একটি ছিল UITextViewযা ফোন নম্বর এবং লিঙ্কগুলি সনাক্ত করে তবে fontColorএটি আমার ওভাররাইড করে এবং এতে পরিবর্তন করে blueColor। অটো সনাক্ত করা লিঙ্কগুলির রঙ ফর্ম্যাট করার কোনও উপায় আছে, বা এই ফাংশনের একটি ম্যানুয়াল সংস্করণ চেষ্টা করা উচিত?


: একটি ব্যক্তিগত API subview UIWebDocumentView ব্যবহার করে এই উত্তর চেক stackoverflow.com/a/11745983/111277
situee

উত্তর:


170

আইওএস 7 উপর আপনি সেট করতে পারেন tintColorএর UITextView। এটি লিংকের রঙের পাশাপাশি কার্সার লাইন এবং নির্বাচিত পাঠ্য রঙকে প্রভাবিত করে।

আইওএস 7 কল করাতে একটি নতুন সম্পত্তি যুক্ত করেছে যা আপনাকে লিঙ্ক শৈলীতে পুরোপুরি নিয়ন্ত্রণ করতে দেয় UITextViewবলে linkTextAttributesমনে হয়।


2
আমি এই উত্তরে আরও ব্যাখ্যা দিয়েছি: stackoverflow.com/a/21027340/1202222
টিম উইন্ডসর ব্রাউন

আইওএস 10.3, আমি ওভাররাইড করতে সক্ষম হয়নি NSFontAttributeNameসঙ্গে linkTextAttributes। আমাকে ম্যানুয়ালি আমারNSLinkAttributeName
সীমান্তের

37

কোনও ইউআইটিএক্সেক্সটভিউ ব্যবহার করার পরিবর্তে, আমি একটি ইউআইবিউবভিউ ব্যবহার করেছি এবং "স্বয়ংক্রিয় সনাক্তকরণ লিঙ্কগুলি" সক্ষম করেছি। লিঙ্কটির রঙ পরিবর্তন করতে, কেবলমাত্র ট্যাগের জন্য একটি নিয়মিত CSS তৈরি করুন।

আমি এরকম কিছু ব্যবহার করেছি:

NSString * htmlString = [NSString stringWithFormat:@"<html><head><script> document.ontouchmove = function(event) { if (document.body.scrollHeight == document.body.clientHeight) event.preventDefault(); } </script><style type='text/css'>* { margin:0; padding:0; } p { color:black; font-family:Helvetica; font-size:14px; } a { color:#63B604; text-decoration:none; }</style></head><body><p>%@</p></body></html>", [update objectForKey:@"text"]];
webText.delegate = self;
[webText loadHTMLString:htmlString baseURL:nil];

13
এটি এত সাধারণ কাজের জন্য অত্যন্ত হ্যাকিশ বলে মনে হচ্ছে।
yuikonnu

আমি জানি ... তবে আমি কোনও হ্যাকিশ কম কাজ জানি না। অ্যাপলের এই ছোট্ট বিশদ সম্পর্কে সত্যই ভাবা উচিত।
লিয়ান্ড্রো আলভেস

@ অস্কার ভাল, আমি মনে করি এটি আলেকজান্দারদের উত্তরের চেয়ে কম হ্যাচিশ। এখনও উন্মাদ যে এই জাতীয় মৌলিক কার্যকারিতার জন্য কোনও সাধারণ সম্পত্তি নেই।
অ্যান্ডি

1
প্রশ্নটি পাঠ্যদর্শন সম্পর্কে নয় ওয়েবভিউ!
বরিস গফুরভ

"আসাদাসদ" এর সাথে সম্পূর্ণ সম্মত হন agree ওয়েব পদ্ধতির দাম খুব ব্যয়বহুল, তারা দেখতে পাবেন যে এটি কতটা র্যাম ব্যবহার করে। এ জাতীয় কোনও সাধারণ কাজের জন্য টেক্সটভিউ এবং অ্যাপল প্রদত্ত বৈশিষ্ট্যগুলি ব্যবহার করুন।
ingconti

37

আপনি UIAppearanceসমস্ত পাঠ্য দর্শনগুলির জন্য পরিবর্তনগুলি প্রয়োগ করতে প্রোটোকল ব্যবহার করতে পারেন :

সুইফট 4.x:

UITextView.appearance().linkTextAttributes = [ .foregroundColor: UIColor.red ]

সুইফট 3.x:

UITextView.appearance().linkTextAttributes = [ NSForegroundColorAttributeName: UIColor.red ]

সুইফট 2.x:

UITextView.appearance().linkTextAttributes = [ NSForegroundColorAttributeName: UIColor.redColor() ]

উদ্দেশ্য গ:

[UITextView appearance].linkTextAttributes = @{ NSForegroundColorAttributeName : UIColor.redColor };

উপস্থিতি UITextViewনথিভুক্ত নয়, তবে ভালভাবে কাজ করে।

UIAppearanceনোটগুলি মনে রাখবেন :

কোনও উইন্ডোতে কোনও ভিউ প্রবেশ করলে আইওএস উপস্থিতি পরিবর্তনগুলি প্রয়োগ করে, এটি ইতিমধ্যে একটি উইন্ডোতে থাকা দৃশ্যের চেহারা পরিবর্তন করে না। বর্তমানে একটি উইন্ডোতে থাকা একটি দৃশ্যের উপস্থিতি পরিবর্তন করতে, ভিউয়ের স্তরক্রম থেকে দর্শনটি সরান এবং তারপরে এটি আবার রেখে দিন।

অন্য কথায়: এই কোডটিতে কল করা init()বা init(coder:)পদ্ধতিগুলি ইউআই অবজেক্টের উপস্থিতি পরিবর্তন করবে তবে কলিংয়ে loadView(), বা viewDidLoad()ভিউকন্ট্রোলারটি তা করবে না
আপনি যদি পুরো অ্যাপ্লিকেশনটির জন্য উপস্থিতি সেট করতে চান তবে application(_:didFinishLaunchingWithOptions:)এই জাতীয় কোডটি কল করার জন্য এটি ভাল জায়গা।


আমি নির্বাচিত উত্তরের চেয়ে এটিকে পছন্দ করি, কারণ আমি কার্সার / পাঠ্য নির্বাচনের জন্য এবং লিঙ্কগুলির জন্য আলাদা রঙ ব্যবহার করতে চাই
কেভিন আর

এটি সেরা এবং আপ টু ডেট উত্তর।
ইয়ুজার

আমি একটি ইউআইটিএক্সেক্সটভিউ ব্যবহার করেছি এবং ভিউডিডলোডে উপরের কোডটি লিখেছি। তবে আমি যখন পাঠ্য ক্ষেত্রে ইমেল লিখি এবং স্পেসের রঙ প্রবেশ করি তখন পরিবর্তন হয় না।
রাজ আগ্রাগল

18

ইউআইটিেক্সটভিউয়ের সমস্যাটি হ'ল linkTextAttributesএটি স্বয়ংক্রিয়ভাবে সনাক্ত করা সমস্ত লিঙ্কের ক্ষেত্রে প্রযোজ্য। আপনি যদি আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা স্পেসিটি থাকতে চান?

দেখা যাচ্ছে যে এখানে একটি কৌশল আছে: লিঙ্কগুলি পাঠ্য দর্শনের বিশিষ্ট পাঠ্যের অংশ হিসাবে কনফিগার করুন এবং linkTextAttributesখালি অভিধানে সেট করুন

আইওএস 11 / সুইফট 4-তে এখানে একটি উদাহরণ রয়েছে:

// mas is the mutable attributed string we are forming...
// ... and we're going to use as the text view's `attributedText`
mas.append(NSAttributedString(string: "LINK", attributes: [
    NSAttributedStringKey.link : URL(string: "https://www.apple.com")!,
    NSAttributedStringKey.foregroundColor : UIColor.green,
    NSAttributedStringKey.underlineStyle : NSUnderlineStyle.styleSingle.rawValue
]))
// ...
self.tv.attributedText = mas
// this is the important thing:
self.tv.linkTextAttributes = [:]

আমার স্ট্রিংটি "আইওএস শিখতে চান?" আপনার নিখরচায় আইওএস টিউটোরিয়ালের সেরা উত্সটি দেখতে হবে! সুইফট চেক হ্যালো google.com যাচ্ছে সালে 9826012345 স্ট্রিং পরীক্ষামূলক এট্রিবিউটেড ... "এবং ডিফল্ট লিংক এট্রিবিউট ওয়েব লিঙ্ক এবং মোবাইল নম্বর জন্য প্রয়োজন। কিন্তু আমি স্ট্রিং অংশ জন্য একটি লিঙ্ক তৈরি করতে চাই" আইওএস জানতে চান? "বিভিন্ন রঙের লিঙ্ক সহ..সু সেল.টিভি.লিংকটেক্সট অ্যাট্রিবিউটস = [:] কেবলমাত্র কাস্টম লিঙ্কের জন্য কাজ করছে
বালকৃষ্ণ যাদব

14

আপনি নিম্নলিখিত দ্বারা একটি টেক্সটভিউতে হাইপারলিংক রঙ পরিবর্তন করতে পারেন:

নিব ফাইলে আপনি প্রোপার্টি উইন্ডোতে যেতে পারেন এবং যে রঙটি চান তা রঙিনটি পরিবর্তন করতে পারেন change

অথবা আপনি নীচের কোডটি ব্যবহার করে এটিও প্রোগ্রামক্রমে করতে পারেন

[YOURTEXTVIEW setTintColor:[UIColor whiteColor]];


3

আমি ওয়েবভিউ ব্যবহার না করেই অন্য কোনও উপায় খুঁজে পেয়েছি তবে মনে রাখবেন যে এটি ব্যক্তিগত এপিআই ব্যবহার করে এবং অ্যাপস্টোরে প্রত্যাখ্যান করা যেতে পারে:

সম্পাদনা: ব্যক্তিগত অ্যাপ্লিকেশন ব্যবহারের পরেও আমার অ্যাপ্লিকেশন অ্যাপল দ্বারা অনুমোদিত হয়েছে!

প্রথমে পদ্ধতিগুলি সহ ইউআইটিেক্সটভিউতে একটি বিভাগ ঘোষণা করুন

- (id)contentAsHTMLString;
- (void)setContentToHTMLString:(id)arg1;

তারা কেবল নিম্নলিখিতগুলি করছে:

- (id)contentAsHTMLString;
{
    return [super contentAsHTMLString];
}

- (void)setContentToHTMLString:(id)arg1;
{
    [super setContentToHTMLString:arg1];
}

রঙিন লিঙ্কগুলির জন্য এখন একটি পদ্ধতি লিখুন:

- (void) colorfillLinks;
{
    NSString *contentString = [self.textViewCustomText contentAsHTMLString];
    contentString = [contentString stringByReplacingOccurrencesOfString:@"x-apple-data-detectors=\"true\""
                                         withString:@"x-apple-data-detectors=\"true\" style=\"color:white;\""];
    [self.textViewCustomText setContentToHTMLString:contentString];
}

এটি সমস্ত ধরণের লিঙ্কগুলিতে একটি নির্দিষ্ট রঙের সাথে শৈলীর বৈশিষ্ট্য নির্ধারণ করে।

ইউআইটিেক্সটভিউগুলি ডিভের মাধ্যমে ওয়েবভিউয়ের মতো রেন্ডার করা হয় যাতে আপনি আরও এগিয়ে গিয়ে প্রতিটি লিঙ্কের ধরণ আলাদাভাবে রঙ করতে পারেন:

<div><a href="http://www.apple.com" x-apple-data-detectors="true" style="color:white;" x-apple-data-detectors-type="link" x-apple-data-detectors-result="0">http://www.apple.com</a></div>

x-apple-data-detectors-type="link"লিংক সঠিক টাইপ জন্য সূচক

সম্পাদনা

উপর iOS7আর কাজ এই হল। আইওএস 7-এ আপনি সহজেই রঙিন রঙ নির্ধারণ করে ইউআইটিএক্সটভিউগুলির লিঙ্কের রঙটি পরিবর্তন করতে পারেন। আপনার কল করা উচিত নয়

- (id)contentAsHTMLString;

আর, আপনি একটি ব্যতিক্রম পাবেন। পরিবর্তে আপনি iOS 7 এবং নীচে সমর্থন করতে চাইলে নিম্নলিখিতটি করুন:

- (void) colorfillLinks;
{
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
    self.tintColor = [UIColor colorWithRed:79.0/255.0
                                     green:168.0/255.0
                                      blue:224.0/255.0
                                     alpha:1.0];
} else if(![self isFirstResponder ]) {
    NSString *contentString = [self contentAsHTMLString];
    contentString = [contentString stringByReplacingOccurrencesOfString:@"x-apple-data-detectors=\"true\""
                                                             withString:@"x-apple-data-detectors=\"true\" style=\"color:#DDDDDE;\""];
    [self setContentToHTMLString:contentString];

}
}


0

সম্পাদনা: এটি দিয়ে না UITextView, UIWebViewপরিবর্তে ব্যবহার করুন।

এজন্য আপনাকে স্টাইলশিট তৈরি করতে হবে। আপনার প্রয়োজনীয় রঙ সংমিশ্রণের সাথে সেখানে একটি শ্রেণি সংজ্ঞায়িত করুন-

.headercopy {
 font-family: "Helvetica";
 font-size: 14px;
 line-height: 18px;
 font-weight:bold;
 color: #25526e;
}
a.headercopy:link {
 color:#ffffff;
 text-decoration:none;
}
a.headercopy:hover {
 color:#00759B;
 text-decoration:none;
}
a.headercopy:visited {
 color:#ffffff;
 text-decoration:none;
} 
a.headercopy:hover {
 color:#00759B;
 text-decoration:none;
}

এইচটিএমএল পৃষ্ঠাটি আপনার মধ্যে এখন 'হেডেরকপি' শ্রেণিটি ব্যবহার করুন-

<b>Fax:</b><a href="tel:646.200.7535" class="headercopy"> 646-200-7535</a><br />

এটি ক্লিক কার্যকারিতা সহ আপনার প্রয়োজনীয় রঙের ফোন নম্বরটি প্রদর্শন করবে।


ওয়েব ভিউ ব্যবহার করা দেশীয় অ্যাপ্লিকেশনগুলির জন্য একটি খারাপ প্রোগ্রামিং স্টাইল।
ingconti

0

এই কোডটি কোনও আই-ফোনে ফোন নম্বরটির রঙ সেট করবে তবে স্বয়ংক্রিয় কল লিঙ্কটিকে voids করবে।

<div><a href="#" x-apple-data-detectors="true" style="color:white;" x-apple-data-detectors-type="link" x-apple-data-detectors-result="0">p&nbsp;&nbsp;0232 963 959</a></div>

0

এটি আমি সুইফট 5 ব্যবহার করে এটি করেছি:

let attributedString = NSMutableAttributedString(string: myTextView.text ?? "")
myTextView.linkTextAttributes = [NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue): UIColor.whiteColor] as [NSAttributedString.Key: Any]?
myTextView.attributedText = attributedString
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.