NEUE LÖSUNG:
//
// WPViewController.m
// test
//
// Created by VASANTH K on 02/01/14.
//
//
#import "WPViewController.h"
@interface WPViewController()
{
UILabel *lableCopy;
}
@end
@implementation WPViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//[self fixSearchBar:searchBar];
// Do any additional setup after loading the view, typically from a nib.
self.searchBar.delegate=self;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.searchBar resignFirstResponder];
//[self fixSearchBar:searchBar];
}
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self fixSearchBar:self.searchBar];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)searchBarTextDidBeginEditing:(UISearchBar *)search
{
[self fixSearchBar:self.searchBar];
}
-(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
[self fixSearchBar:self.searchBar];
}
-(void)fixSearchBar:(UISearchBar*)searchBar
{
UITextField *searchField = [searchBar valueForKey:@"_searchField"];
// [searchField setValue:[UIColor blueColor] forKeyPath:@"_placeholderLabel.textColor"];
UILabel *lable=[searchField valueForKey:@"_placeholderLabel"];
if(!lableCopy)
{
lableCopy=[[UILabel alloc]initWithFrame:lable.frame];
lableCopy.font=lable.font;
[lableCopy setText:lable.text];
[lableCopy setTextColor:lable.textColor];
UIButton *button;
for (UIView *view in [[[[searchBar.subviews objectAtIndex:0] subviews] objectAtIndex:1] subviews]) {
if([view isKindOfClass:[UIButton class]])
{
button=(UIButton*)view;
break;
}
}
if(button)
{
//lable.hidden=YES;
CGRect newFrame=lable.frame;
newFrame.size.width=button.frame.origin.x-lable.frame.origin.x;
lableCopy.frame=newFrame;
[lableCopy adjustsFontSizeToFitWidth];
//lableCopy.backgroundColor=[UIColor blackColor];
[searchField addSubview:lableCopy];
lableCopy.text=lable.text;
//lableCopy.textColor=[UIColor redColor];
}
}
for (UIView *view in [[searchBar.subviews objectAtIndex:0] subviews]) {
if([view isKindOfClass:[UITextField class]])
{
// NSLog(@"%@",view);
NSLog(@"TextFieldPresent==>%@",view);
if([view isFirstResponder])
{
lable.hidden=NO;
lableCopy.hidden=YES;
}
else
{
lable.hidden=YES;
lableCopy.hidden=NO;
}
break;
}
}
}
@end
Diese Lösung einfach ist das Hinzufügen neuer UILable Ansicht und blenden Sie die vorhandenen Platzhalter die echtes Gefühl von searchBar.Again zu geben, den tatsächlichen Platzhalter erneut anzuzeigen, wenn Suchleiste aktiv wurde.
Dies kann ein temporärer Hack sein, um das UI-Problem in IOS7 zu beheben.
alte Lösung: [Search setValue: [NSNumber numberWithBool: JA] forKeyPath: @ "_ placeholderLabel.adjustsFontSizeToFitWidth"];
funktioniert nicht in ios7, weil die Größe des für die Anzeige des Inhalts verwendeten Lable ausreicht, um den Text anzuzeigen, das Problem ist der Etikettenbreitenfehler von ios7. Es kann die Etikettenbreite nicht neu skalieren.
gibt es ein bisschen Hack, um dies zu beheben.
UITextField *searchField = [searchBar valueForKey:@"_searchField"];
UILabel *lable=[searchBar valueForKey:@"_placeholderLabel"];
lable.font=[UIFont fontWithName:lable.font.fontName size:10.0];
berechnen Sie die Schriftgröße basierend auf der eigenen Suchstrichbreite. Ich habe auch versucht, die Breite eines bestimmten Labels zu ändern, aber es funktioniert nie.
Bitte teilen Sie einige Code. Stellen Sie außerdem sicher, dass Sie einen Fehlerbericht mit Apple einreichen. –
Sie brauchen keine Schriftgröße – codercat
Was ist Ihre Uisearchbar Rahmengröße – codercat