কীস্ট্রোক প্রবেশ করায় কোনও ইউআইটিেক্সটফিল্ডের মান পাওয়া যায়?


107

ধরা যাক আমার কাছে নিম্নলিখিত কোড রয়েছে:

IBOutlet UITextField* nameTextField;
IBOutlet UILabel* greetingLabel;

greetingLabelব্যবহারকারী যে কোনও কী টিপানোর সাথে সাথেই "হ্যালো [নেম টেক্সটফিল্ড]" পড়তে চাই ।

মূলত আমার যা দরকার তা হ'ল আইকনটি কোকো প্রতিনিধি পদ্ধতির সমতুল্য controlTextDidChange

textField:shouldChangeCharactersInRange:প্রতিনিধি পদ্ধতি প্রতিটি সময় একটি কীস্ট্রোক ঘটে বলা হয়:

- (BOOL)              textField:(UITextField *)textField
  shouldChangeCharactersInRange:(NSRange)range     
              replacementString:(NSString *)string

স্ট্রিং আর্গুমেন্টটি চাপানো অক্ষরটি ফিরিয়ে দেয়। প্রকৃত textFieldমান ( nameTextField.text) তবে ফাঁকা থাকে।

আমি এখানে কি মিস করছি? (আমি nameTextFieldব্যবহারকারী এখনও পর্যন্ত প্রবেশ করানো সঠিক স্ট্রিং প্রতিফলিত করতে চাই )।

উত্তর:


197

দেখা যাচ্ছে, এটি করার সহজতম উপায় হ'ল ইন্টারফেস বিল্ডার ব্যবহার:

  • একটি আইবিএक्शन যুক্ত করুন (ভিউকন্ট্রোলারটিতে, এই ক্ষেত্রে যেমনটি বলুন)
  • ইন্টারফেস বিল্ডারে ইউআইটিেক্সটফিল্ডে Ctrl- ক্লিক (বা ডান ক্লিক)
  • "পদক্ষেপের পরিবর্তিত" ইভেন্টটি প্রথম ধাপে যুক্ত হওয়া ফাইলের মালিকের আইবিএ-র সাথে সংযুক্ত করুন।

মনোমুগ্ধকর মতো কাজ করে :) :) আমি বিশ্বাস করতে পারি না যে আমি এটিতে বহু দিন কাটিয়েছি, এবং এখন বুঝতে পারি যে সমাধানটি আমি ভেবেছিলাম তার চেয়ে অনেক সহজ ছিল: পি)


2
ধন্যবাদ! আপনি কোনও ইউআইএস্লাইডার ইত্যাদির মতো ব্যবহার করতে চাইলে আমি "মান পরিবর্তিত" ব্যবহার করছিলাম Interest আগ্রহজনক যে তাদের দুটি ইভেন্টের একই আচরণ বলে মনে হচ্ছে।
wjl

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

8
@ অ্যালবার্ট রেনশাও তবে আপনি এটি প্রোগ্রাম্যাটিক উপায়ে করতে পারেন;) কেবল সম্পাদন করুন [textField addTarget:self action:@selector(textFieldEditingChanged:) forControlEvents:UIControlEventEditingChanged];)।
ভিভ করুন

101

আপনি পাঠ্য ক্ষেত্রে UIControlEventEditingChanges ইভেন্টের জন্য একটি ক্রিয়াটি নিবন্ধ করতে পারেন:

[nameTextField addTarget:self action:@selector(updateLabelUsingContentsOfTextField:) forControlEvents:UIControlEventEditingChanged];

...

// TODO: error checking

- (void)updateLabelUsingContentsOfTextField:(id)sender {

    greetingLabel.text = [NSString stringWithFormat:@"Hello %@", ((UITextField *)sender).text];

}

ইন্টারফেস বিল্ডার ব্যবহার করে এটি নির্দিষ্ট করার কোনও উপায় আছে কি?
প্লেগহ্যামার

11

UITextFieldএকটি বিজ্ঞপ্তি রয়েছে UITextFieldTextDidChangeযা প্রতিবার পাঠানো হলে পরিবর্তিত হবে যদি আপনি এর জন্য নিবন্ধন করেন। কেবলমাত্র সেই বিজ্ঞপ্তির জন্য এবং নোটিফিকেশন দ্বারা ডাকা পদ্ধতিতে নিবন্ধিত করুন, লেবেলের পাঠ্যটি পরিবর্তন করুন।

এটি যুক্ত করতে, আপনার বিজ্ঞপ্তি হ্যান্ডলারের কাছে দেওয়া বস্তুটির পাঠ্য থাকবে UITextField

আশা করি এইটি কাজ করবে.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.