আমি ইন / কার্সারের রঙ ক্যারেট পরিবর্তন সম্পর্কে হতাশ করছি UITextField(এবং UITextViewযদি তার একই উত্তর) iOS এ। আমি ওএসএক্স বিকাশের জন্য উত্তরগুলি দেখেছি, তবে আইওএসের জন্য কিছুই নেই।
এটা কি সম্ভব?
আমি ইন / কার্সারের রঙ ক্যারেট পরিবর্তন সম্পর্কে হতাশ করছি UITextField(এবং UITextViewযদি তার একই উত্তর) iOS এ। আমি ওএসএক্স বিকাশের জন্য উত্তরগুলি দেখেছি, তবে আইওএসের জন্য কিছুই নেই।
এটা কি সম্ভব?
উত্তর:
আপনি যদি আইওএস 7+ টার্গেট করে থাকেন তবে এটি আরও সহজ করা হয়েছে। tintColorউপস্থিতির প্রক্সিটি ব্যবহার করে কার্সার দিয়ে কেবল ক্ষেত্রটির পরিবর্তন করুন এবং এটি অ্যাপ্লিকেশন জুড়ে প্রযোজ্য:
সুইফট 3.0:
UITextField.appearance().tintColor = .black
উদ্দেশ্য গ:
[[UITextField appearance] setTintColor:[UIColor blackColor]];
একই উত্তর কোনও ব্যক্তির জন্য প্রযোজ্য UITextField:
সুইফট 3.0:
myTextField.tintColor = .black
উদ্দেশ্য গ
[myTextField setTintColor:[UIColor blackColor]];
সুইফট 3:
UITextField.appearance().tintColor = UIColor.black
UITextView.appearance().tintColor = UIColor.black
দ্রষ্টব্য: এই উত্তরটির মেয়াদ শেষ হয়ে গেছে এবং কেবল প্রাক-আইওএস 7 বিকাশের জন্য ব্যবহার করা উচিত। আইওএস 7 এ উপস্থিতি প্রক্সি ব্যবহার করে 1 লাইন সমাধানের জন্য অন্যান্য উত্তর দেখুন।
আমি যে প্রকল্পে কাজ করছি তাতে একই সমস্যার মুখোমুখি হওয়ার পরে আমি এই প্রশ্নে পৌঁছেছি।
আমি এমন একটি সমাধান তৈরি করতে পরিচালিত করেছি যা অ্যাপস্টোর পর্যালোচনা দল গ্রহণ করবে কারণ এটি কোনও বিদ্যমান ব্যক্তিগত API ব্যবহার করে না।
আমি ডিজিেক্সটফিল্ড নামে একটি নিয়ন্ত্রণ তৈরি করেছি যা ইউআইটিেক্সটফিল্ড প্রসারিত করে।
yourTextField.tintColor = [UIColor whiteColor];
আপনি কোডে সেট করে থাকলে এটি কাজ করে, 'কোনওরকম রঙ ট্রিগার ইন্টারফেস বিল্ডারে এটি না করে (এক্সকোড 6.1.1)। কোনও উপস্থিতি প্রক্সি পরিবর্তন করার প্রয়োজন ছাড়াই এটি ভালভাবে উপযুক্ত।
tintColorজন্য সেট করা UITextFieldএবং UITextViewভিন্নভাবে কাজ করে। যদিও UITextFieldআপনার tintColorকার্সার রঙ পরিবর্তন করার জন্য আপডেট করার পরে অতিরিক্ত কোড কল করার দরকার নেই , তবে UITextViewআপনার প্রয়োজন।
সুতরাং এটির tintColorজন্য সেট করার পরে UITextView(এটি আইবি বা কোডের কোনও বিষয় নয়) textView.tintColorDidChange()এটি প্রয়োগ করার জন্য আপনাকে কল করতে হবে (আসলে এটি পাঠ্য দৃশ্যের কনফিগারেশনটিকে তার সাবউভিউ হায়ারার্কির নিচে দিয়ে যাবে)।
এটি দ্রুতগতির জন্য আমার জন্য কাজ করেছে:
UITextField.tintColor = UIColor.blackColor()
আপনি এটি স্টোরিবোর্ডেও সেট করতে পারেন: https://stackoverflow.com/a/18759577/3075340
Instance member 'tintcolor' cannot be used on type 'UITextField'
ইউআইভিউয়ের উপস্থিতির রঙিন রঙ সেট করার জন্য আরও সাধারণ পদ্ধতির বিষয়টি হবে।
UIColor *myColor = [UIColor purpleColor];
[[UIView appearance] setTintColor:myColor];
আপনি অনেকগুলি ডিফল্ট ইউআই উপাদান ব্যবহার করছেন কিনা তা বোঝা যায়।
[UIView appearance]
চেষ্টা করুন, এটা আমার জন্য কাজ করছে।
[[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] strong textforKey:@"insertionPointColor"];
এটি কেবলমাত্র কোনও ব্যক্তিগত সম্পত্তি অ্যাক্সেসের মাধ্যমেই সম্ভব এবং তাই কোনও অ্যাপল অ্যাপস্টোর অ্যাপ্লিকেশন প্রত্যাখ্যানের কারণ হতে পারে।
দুর্গেশের দৃষ্টিভঙ্গি কাজ করে।
আমি এই জাতীয় কেভিসি সমাধানগুলিও বহুবার ব্যবহার করেছি। সত্ত্বেও এটি অনিবন্ধিত বলে মনে হয়, তবে এটি কার্যকর হয়। সত্যই, আপনি এখানে কোনও ব্যক্তিগত পদ্ধতি ব্যবহার করবেন না - কেবল কী-মান কোডিং যা আইনী।
পিএস গতকাল আমার নতুন অ্যাপটি অ্যাপস্টোরে এই পদ্ধতির কোনও সমস্যা ছাড়াই হাজির। এবং যখন আমি কিছু পঠনযোগ্য কেবলমাত্র (যেমন নেভিগটনবার) বৈশিষ্ট্যগুলি বা ব্যক্তিগত আইভারগুলি পরিবর্তন করতে কেভিসি ব্যবহার করি তখন এটি প্রথম ঘটনা নয়।
সুইফট সহ ইন্টারফেস বিল্ডার সংস্করণের জন্য
@IBOutlet weak var tvValue: UITextView! {
didSet {
tvValue.tintColor = .black
}
}
যদি UITextFieldথেকে UISearchBarতারপর প্রথম পেতে textFieldথেকে searchBarএবং তারপর আবেদন tintColorসম্পত্তি:
let textFieldInsideSearchBar = searchBar.value(forKey: "searchField") as? UITextField
textFieldInsideSearchBar?.tintColor = UIColor.lightGray
আমার মনে হয় আপনি যদি কিছু কাস্টম রঙ চান তবে আপনি 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 এ পরীক্ষিত
UITextField, কিভাবে এ ইন্টারফেস বিল্ডার মধ্যে এই কাজ করতে সহ stackoverflow.com/a/18759577/1709587