เคอร์เซอร์มองไม่เห็นใน UISearchBar iOS 7

ฉันมี UISearchBar ใน UITableView เป็นส่วนหัวของตาราง เมื่อฉันกด UISearchBar เพื่อเริ่มค้นหา วิธีการนี้จะถูกทริกเกอร์

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar

สำหรับ UISearchDisplayController

แต่ผลก็เป็นเช่นนั้น

อย่างที่คุณเห็นไม่มีเคอร์เซอร์ ฉันสามารถเริ่มพิมพ์และค้นหาได้ทุกอย่างทำงานได้ดี นอกจากนี้ยังมองไม่เห็นเฉพาะใน iOS 7 อย่างไรก็ตาม ด้วย iOS 6.1 และ iOS 7.1 Beta 3 ฉันสามารถเห็นเคอร์เซอร์ได้ ดังนั้นฉันจะทำให้เคอร์เซอร์ UISearchBar มองเห็นได้อย่างไรหรือฉันจะเพิ่มเคอร์เซอร์ใน UISearchBar ได้อย่างไร


person Kemal Can Kaynak    schedule 30.01.2014    source แหล่งที่มา
comment
มีโอกาสใดที่คุณกำลังตั้งค่า tintColor ที่ใดที่หนึ่งเพื่อพยายามเปลี่ยนสีของ UI การตัดคำ หากเป็นเช่นนั้น นั่นอาจทำให้เกิดปัญหาเคอร์เซอร์ที่คุณเห็น (วิธีแก้ปัญหาที่เป็นไปได้)   -  person patridge    schedule 13.03.2014


คำตอบ (6)


เคอร์เซอร์ในแถบค้นหาใช้สีจากแถบค้นหา -> มุมมอง -> คุณสมบัติสีอ่อน ในกรณีของคุณ มันถูกตั้งค่าเป็นสีขาว ดังนั้นจึงมองไม่เห็น

person Tomas M    schedule 04.03.2014
comment
ในสภาวะปกติคุณพูดถูกแต่มันไม่ได้ผลสำหรับฉัน ฉันแก้ไขปัญหานี้ด้วยการสร้าง iOS SearchBar ดั้งเดิม - person Kemal Can Kaynak; 10.03.2014
comment
หากคุณต้องการเปลี่ยนเฉพาะสีเคอร์เซอร์ คุณสามารถใช้สิ่งนี้: UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).tintColor = .black - person Radek Wilczak; 16.02.2018

ลองใช้กับ

-(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
    self.navigationItem.titleView.tintColor = [UIColor blueColor];

}

หวังว่านี่จะช่วยคุณได้

person pulkit    schedule 05.05.2014

ลองตั้งค่าสีอ่อนของฟิลด์ข้อความโดยใช้ UIAppearance

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTintColor: [UIColor darkGrayColor]];
person Yatheesha    schedule 13.07.2015
comment
สวิฟท์เทียบเท่ากับอะไร? - person Satyam; 14.07.2017

หากคุณต้องการให้เคอร์เซอร์และปุ่มยกเลิกเป็นสีที่แตกต่างกัน...


เริ่มต้นด้วยการตั้งค่าสีอ่อนของมุมมอง (ไม่ใช่สีอ่อนของแท่ง) ในเครื่องมือแก้ไขกระดานเรื่องราว ซึ่งจะนำไปใช้กับทั้งเคอร์เซอร์และปุ่มยกเลิก

UISearchBar ในตัวแก้ไขสตอรี่บอร์ดพร้อมโปรแกรมจำลอง


หากต้องการให้เคอร์เซอร์มีสีอื่น คุณต้องทำโดยทางโปรแกรม ฟิลด์ข้อความซ้อนกันอยู่สองสามระดับในมุมมองย่อยของแถบค้นหา ใช้ฟังก์ชันตัวช่วย setTextFieldTintColor นี้เพื่อสำรวจมุมมองย่อยทั้งหมด

@IBOutlet weak var searchBar: UISearchBar!

override func viewDidLoad() {
    super.viewDidLoad()

    // set tint color for all subviews in searchBar that are of type UITextField
    setTextFieldTintColor(to: UIColor.darkText, for: searchBar)
}    

func setTextFieldTintColor(to color: UIColor, for view: UIView) {
    if view is UITextField {
        view.tintColor = color
    }
    for subview in view.subviews {
        setTextFieldTintColor(to: color, for: subview)
    }
}

ผลลัพธ์ที่ได้จะมีลักษณะดังนี้:

UISearchBar ที่มีเคอร์เซอร์สีต่างกันและปุ่มยกเลิก

person Derek Soike    schedule 24.02.2017

ลองใช้โค้ดเพียงบรรทัดเดียวในการแก้ปัญหาของคุณ เปลี่ยนคุณสมบัติเคอร์เซอร์ tintColor จากสีขาวเป็นสีน้ำเงิน

  searchBar.tintColor = [UIColor blueColor];

หวังว่านี่จะช่วยใครบางคนได้

person Jaywant Khedkar    schedule 16.08.2018

เคอร์เซอร์ของคุณเป็นสีขาวเนื่องจากคุณสมบัติ TintColor ของคุณบน UISearchBar ถูกตั้งค่าเป็นสีขาว

หากคุณต้องการให้ Cancel btn เป็นสีขาว แต่เคอร์เซอร์เป็นสีดำ คุณสามารถใช้: UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).tintColor = .black

person Radek Wilczak    schedule 16.02.2018