ইউআইটিেক্সটফিল্ড এবং ইউআইটিেক্সটভিউ কার্সার / ক্যারেট রঙ পরিবর্তন করুন


222

আমি ইন / কার্সারের রঙ ক্যারেট পরিবর্তন সম্পর্কে হতাশ করছি UITextField(এবং UITextViewযদি তার একই উত্তর) iOS এ। আমি ওএসএক্স বিকাশের জন্য উত্তরগুলি দেখেছি, তবে আইওএসের জন্য কিছুই নেই।

এটা কি সম্ভব?


1
বিস্তারিত উত্তর UITextField, কিভাবে এ ইন্টারফেস বিল্ডার মধ্যে এই কাজ করতে সহ stackoverflow.com/a/18759577/1709587
মার্ক এ Amery

1
সহজ এবং এ সম্পূর্ণ উত্তর stackoverflow.com/a/18945907/1292230 ;)
RileyE

উত্তর:


511

আপনি যদি আইওএস 7+ টার্গেট করে থাকেন তবে এটি আরও সহজ করা হয়েছে। tintColorউপস্থিতির প্রক্সিটি ব্যবহার করে কার্সার দিয়ে কেবল ক্ষেত্রটির পরিবর্তন করুন এবং এটি অ্যাপ্লিকেশন জুড়ে প্রযোজ্য:

সুইফট 3.0:

UITextField.appearance().tintColor = .black 

উদ্দেশ্য গ:

[[UITextField appearance] setTintColor:[UIColor blackColor]];

একই উত্তর কোনও ব্যক্তির জন্য প্রযোজ্য UITextField:

সুইফট 3.0:

myTextField.tintColor = .black 

উদ্দেশ্য গ

[myTextField setTintColor:[UIColor blackColor]];

13
আমি দেখতে পেলাম যে এটির ফলে আমার ইউআইবারবার বাটন আইটেম টিন্টের রঙগুলি তাদের ডিফল্ট মানগুলিতে স্থির হয়ে উঠেছে এমনকি আমি যদি রঙের সম্পূর্ণ ভিন্ন কিছুতে সেট করি। আমি ইউআইটিেক্সটফিল্ডগুলি তৈরি করার সময় পৃথকভাবে রঙিন রঙ সেট করে সমস্যার সমাধান করেছি।
উইলটালমাজে

এটি কাজ করে, তবে আপনি যদি এটি ফিনিশলঞ্চে করেন তবে? অথবা আপনি এটি ব্যবহারকারীর মিথস্ক্রিয়া ভিত্তিক করতে পারেন, উদাহরণস্বরূপ একটি বোতাম টিপুন?
স্টিফেন অ্যান্ডারসন

@ স্টেফেনএন্ডারসন এর ইউআইএআইপিয়ারেন্স প্রক্সি এপিআই ডকুমেন্টেশন অনুসারে আচরণ করা উচিত।
ডিস্কদেভ

[[ইউআইটিেক্সটভিউ উপস্থিতি] সেটটিন্টকালার: টিল]; কোনও কারণে এটি আমার নববার্তাগুলির রঙ পরিবর্তন করে, আপনি কীভাবে নির্বিচারে সেট করলেন?
জন

3
সুইফ্ট ৩.০ এ এটি ব্যবহার করুন: ইউআইটিেক্সটফিল্ড.অ্যাপিয়ারেন্স ()। টিন্ট কালার = ইউআইসিওলর.ব্ল্যাক
লুকাস

44

IOS7 এর সাহায্যে আপনি কেবল টেক্সটফিল্ডের টিন্ট কালার পরিবর্তন করতে পারেন


20

সুইফট 3:

  UITextField.appearance().tintColor = UIColor.black
  UITextView.appearance().tintColor = UIColor.black

1
সুইফ্ট ৩.০ এ এটি ব্যবহার করুন: ইউআইটিেক্সটফিল্ড.অ্যাপিয়ারেন্স ()। টিন্ট কালার = ইউআইসিওলর.ব্ল্যাক
লুকাস

13

দ্রষ্টব্য: এই উত্তরটির মেয়াদ শেষ হয়ে গেছে এবং কেবল প্রাক-আইওএস 7 বিকাশের জন্য ব্যবহার করা উচিত। আইওএস 7 এ উপস্থিতি প্রক্সি ব্যবহার করে 1 লাইন সমাধানের জন্য অন্যান্য উত্তর দেখুন।

আমি যে প্রকল্পে কাজ করছি তাতে একই সমস্যার মুখোমুখি হওয়ার পরে আমি এই প্রশ্নে পৌঁছেছি।

আমি এমন একটি সমাধান তৈরি করতে পরিচালিত করেছি যা অ্যাপস্টোর পর্যালোচনা দল গ্রহণ করবে কারণ এটি কোনও বিদ্যমান ব্যক্তিগত API ব্যবহার করে না।

আমি ডিজিেক্সটফিল্ড নামে একটি নিয়ন্ত্রণ তৈরি করেছি যা ইউআইটিেক্সটফিল্ড প্রসারিত করে।


এটা অসাধারণ. সত্যিই, এর কারণে, আমি অবশ্যই ডক্সগুলিতে "কনফার্মস টু" তে গভীর নজর রাখব। তবে আমি খুশি যে এই বিষয়ে পড়ার এবং টিঙ্কিংয়ের জন্য কেবলমাত্র একজনকে ব্যয় করতে হয়েছিল। আশা করি অন্যান্য ব্যক্তিরা এটি দেখতে এবং ব্যবহার করতে সক্ষম হবেন!
RileyE

যাইহোক, আমি অ্যানিমেশন বিকল্পগুলি সুপারিশ করতে পারি, @ প্রপারিকে অপসারণ এবং কাস্টম ক্যারেটের প্রস্থের জন্য কেবল সেটার এবং গেটর তৈরির পাশাপাশি একটি সেটার এবং গেটর তৈরি করুন। আপনার আগ্রহী নাও হতে পারে তবে আমি সর্বদা ছোট্ট টুইটগুলি পছন্দ করি!
RileyE

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

3
: - এটি iOS 7 এ অনেক সহজ নীচের আমার উত্তর দেখার stackoverflow.com/a/18945907/1103584
DiscDev

12
yourTextField.tintColor = [UIColor whiteColor];

আপনি কোডে সেট করে থাকলে এটি কাজ করে, 'কোনওরকম রঙ ট্রিগার ইন্টারফেস বিল্ডারে এটি না করে (এক্সকোড 6.1.1)। কোনও উপস্থিতি প্রক্সি পরিবর্তন করার প্রয়োজন ছাড়াই এটি ভালভাবে উপযুক্ত।


2
কিছু অজানা কারণে এটি আমার কাছে হোয়াইট কালার দিয়ে কাজ করে না তবে অন্য রঙের সাথে কাজ করে (আইওএস 8-তে পরীক্ষা করে)। এটিকে কাজ করার জন্য আমাকে এমন রঙ সেট করতে হয়েছিল যা প্রায় সাদা তবে সাদা নয়।
লেসেক জাজারি 18

নিবন্ধন করুন তুমি আমার দিন বাঁচিয়েছ! আমি প্রায় 4 ঘন্টা চেষ্টা করছিলাম এবং আপনার কথার ক্লু ছিল! অ্যাপলের এই ক্রেজি বাগটি ঠিক করা উচিত যা বিকাশকারীকে পাগল করে তোলে।
কার্তিক রমেশ

10

tintColorজন্য সেট করা UITextFieldএবং UITextViewভিন্নভাবে কাজ করে। যদিও UITextFieldআপনার tintColorকার্সার রঙ পরিবর্তন করার জন্য আপডেট করার পরে অতিরিক্ত কোড কল করার দরকার নেই , তবে UITextViewআপনার প্রয়োজন।

সুতরাং এটির tintColorজন্য সেট করার পরে UITextView(এটি আইবি বা কোডের কোনও বিষয় নয়) textView.tintColorDidChange()এটি প্রয়োগ করার জন্য আপনাকে কল করতে হবে (আসলে এটি পাঠ্য দৃশ্যের কনফিগারেশনটিকে তার সাবউভিউ হায়ারার্কির নিচে দিয়ে যাবে)।


5

এটি দ্রুতগতির জন্য আমার জন্য কাজ করেছে:

UITextField.tintColor = UIColor.blackColor()

আপনি এটি স্টোরিবোর্ডেও সেট করতে পারেন: https://stackoverflow.com/a/18759577/3075340


এটি কাজ করে না। আমি ত্রুটি পেয়েছি:Instance member 'tintcolor' cannot be used on type 'UITextField'
পাইবেইরোস

@pableiros উপরেরটি সুইফট 2 এর সাথে ছিল সম্ভবত আপনি এখন সুইফট 3 ব্যবহার করছেন?
মাইক্রো

আমি সুইফট 3 এবং সুইফট ২.৩-তে চেষ্টা করেছি, আমি নিশ্চিত নই যে সুইফট ২.২-এ আছে এবং এটি কম কাজ করে
প্যাবেরিওস

3

ইউআইভিউয়ের উপস্থিতির রঙিন রঙ সেট করার জন্য আরও সাধারণ পদ্ধতির বিষয়টি হবে।

UIColor *myColor = [UIColor purpleColor];
[[UIView appearance] setTintColor:myColor];

আপনি অনেকগুলি ডিফল্ট ইউআই উপাদান ব্যবহার করছেন কিনা তা বোঝা যায়।


2
হুমম ... এর আরও অনেকগুলি পার্শ্ব প্রতিক্রিয়া রয়েছে ... প্রশ্নটি কেবল ক্যারেটের রঙ পরিবর্তন করার বিষয়েই জিজ্ঞাসা করছে, এবং আপনার উত্তরটি অ্যাপ্লিকেশনটিতে প্রতিটি ইউআইভিউউইনকে আঁকতে চলেছে ... সম্ভবত এটি সম্ভবত এমন পদ্ধতির নয় যা বেশিরভাগ লোকেরা চায় নিতে.
ডিসকডেভ

এটির উপরে +1, অনেকগুলি পার্শ্ব প্রতিক্রিয়া, যদি লক্ষ্যটি কেবল ক্যারেটের রঙ পরিবর্তন করতে হয়। আপনি যখন একটি ধারক স্টাইল করছেন তখন ইউআইভিউ টিন্ট কালার সেট করা কার্যকর হয় (তবে আমি ব্যবহার করব না[UIView appearance]
কলিন্টা

2

চেষ্টা করুন, এটা আমার জন্য কাজ করছে।

[[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] strong textforKey:@"insertionPointColor"];

6
এটি একটি ব্যক্তিগত পদ্ধতি ব্যবহার করছে তবে পরামর্শের জন্য আপনাকে ধন্যবাদ। এটি সহজেই কোনও আবেদন প্রত্যাখ্যান করতে পারে।
RileyE

1

এটি কেবলমাত্র কোনও ব্যক্তিগত সম্পত্তি অ্যাক্সেসের মাধ্যমেই সম্ভব এবং তাই কোনও অ্যাপল অ্যাপস্টোর অ্যাপ্লিকেশন প্রত্যাখ্যানের কারণ হতে পারে।

এই স্ট্যাকওভারফ্লো প্রশ্নটি একবার দেখুন


0

দুর্গেশের দৃষ্টিভঙ্গি কাজ করে।

আমি এই জাতীয় কেভিসি সমাধানগুলিও বহুবার ব্যবহার করেছি। সত্ত্বেও এটি অনিবন্ধিত বলে মনে হয়, তবে এটি কার্যকর হয়। সত্যই, আপনি এখানে কোনও ব্যক্তিগত পদ্ধতি ব্যবহার করবেন না - কেবল কী-মান কোডিং যা আইনী।

পিএস গতকাল আমার নতুন অ্যাপটি অ্যাপস্টোরে এই পদ্ধতির কোনও সমস্যা ছাড়াই হাজির। এবং যখন আমি কিছু পঠনযোগ্য কেবলমাত্র (যেমন নেভিগটনবার) বৈশিষ্ট্যগুলি বা ব্যক্তিগত আইভারগুলি পরিবর্তন করতে কেভিসি ব্যবহার করি তখন এটি প্রথম ঘটনা নয়।


1
এটি কোনও ব্যক্তিগত পদ্ধতি ব্যবহার করছে না, বরং এর চেয়ে কীগুলি বিনা শংসাপত্রযুক্ত, যার অর্থ অ্যাপ স্টোরের অ্যাপ্লিকেশনগুলির জন্য সেগুলি ব্যবহার করা হবে না। আপনার আবেদনটি বিষয়গতভাবে বাতিল হয়ে যেতে পারে। আপনার অবশ্যই একটি দয়ালু পর্যালোচনা করা উচিত ছিল, কারণ এই পদ্ধতিটি ব্যবহার করার কারণে অনেকেই প্রত্যাখাত হয়েছেন।
RileyE

তারপরে আমার প্রায় 10 ধরণের পর্যালোচক রয়েছে :) এবং আমার অসংখ্য সহকর্মীও।
ম্যালেক্স

1
কেবল স্পষ্ট করে বলার জন্য, এই ক্ষেত্রে "কী-মান কোডিং" সুবিধা পদ্ধতিটি ব্যবহার করে কোনও সম্পত্তিকে একটি মূল্য নির্ধারণ করছে। যে কারণটি আমরা সেটার বনাম সেটারটি ব্যবহার করি তা হ'ল সম্পত্তি অ্যাক্সেসযোগ্য / লুকানো / ব্যক্তিগত।
রিলে

1
এখানে আমি বোঝাতে চাইছি (সম্ভবত আমি কোনও গুরুত্বপূর্ণ কিছু জানি না) কেবল কেভিসির ডকুমেন্টেশনগুলি আক্ষরিকভাবে কোনও বিধিনিষেধ বোঝায় না। সুতরাং আমি সফলভাবে এই সমস্ত ব্যবহার। এবং আশা করি অন্যরাও পারেন।
ম্যালেক্স

1
প্রশংসা করেন। তবে অ্যাপল তাদের 'ব্যবহারের চুক্তির শর্তাবলীতে' বলেছে যে আমাদের তাদের ডকুমেন্টেশনের অন্তর্ভুক্ত যে কোনও কিছু ব্যবহার এবং প্রকাশ্যভাবে আলোচনা করার অনুমতি দেওয়া হয়েছে এবং অনির্ধারিত পদ্ধতির ব্যবহার নিষিদ্ধ করা হয়েছে (কেভিসির মাধ্যমে 'টেক্সটইনপুট্রেটস' সেটার পদ্ধতিটি অন্তর্ভুক্ত করা হবে) সম্পত্তি অনথিভুক্ত। মূলত, আপনি যদি ডকুমেন্টেশনে পদ্ধতিটি না খুঁজে পান তবে এটি নিষিদ্ধ। নিষিদ্ধ প্রত্যাখ্যান গ্যারান্টি দেয়, যদিও। আমার কিছু অ্যাপ্লিকেশনগুলিকে স্টোর এ তৈরি করার কারণে অন্তর্ভুক্ত করার কারণে আমি কিছু অ্যাপ্লিকেশন প্রত্যাখ্যান করেছি। এটি হিট এবং অননুমোদিত পদ্ধতিগুলির সাথে মিস।
রিলে

0

সুইফট সহ ইন্টারফেস বিল্ডার সংস্করণের জন্য

@IBOutlet weak var tvValue: UITextView! {
        didSet {
            tvValue.tintColor = .black
        }
    }

0

যদি UITextFieldথেকে UISearchBarতারপর প্রথম পেতে textFieldথেকে searchBarএবং তারপর আবেদন tintColorসম্পত্তি:

let textFieldInsideSearchBar = searchBar.value(forKey: "searchField") as? UITextField
textFieldInsideSearchBar?.tintColor = UIColor.lightGray

0

সুইফট 4

ভিউডিডলয়েডে () কেবল কোডের নীচে কল করুন:

কোড নমুনা

//txtVComplaint is a textView

txtVComplaint.tintColor = UIColor.white

txtVComplaint.tintColorDidChange()

0

আমার মনে হয় আপনি যদি কিছু কাস্টম রঙ চান তবে আপনি Assets.xcassetsফোল্ডারে যেতে পারেন , ডান ক্লিক করুন এবং নির্বাচন করুন New Color Set, একবার আপনি নিজের রঙ তৈরি করার পরে এটি পুনরায় ব্যবহারের জন্য একটি নাম দিন।

এবং আপনি এটি ঠিক এটি ব্যবহার করতে পারেন:

import UIKit 

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        UITextField.appearance().tintColor = UIColor(named: "YOUR-COLOR-NAME")  #here
    }
}

ম্যাকোস 10.15 / আইওএস 13 / সুইফ্ট 5 এ পরীক্ষিত


0

লোকেরা এর জন্য সুইফটুআইয়ের সমতুল্য সন্ধান Textfieldকরছে accentColor:

TextField("Label", text: $self.textToBind).accentColor(Color.red)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.