我尝试在swift上创建我的搜索栏,但是当我按下搜索栏时,我有一个问题就是在屏幕上关闭键盘.当我尝试使用textfield时,它可以很好地使用此代码.
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
self.view.endEditing(true)
}
Run Code Online (Sandbox Code Playgroud)
当我按下我的文本字段然后键盘消失时,它工作.我想用我的搜索栏制作这样的东西,因为当我使用搜索栏并使用与textfield相同的方式时,它根本不起作用.任何参考或代码对我都非常有用.
我有一个UISearchBar,它充当表视图的实时过滤器.当键盘通过endEditing:解除时,查询文本和灰色圆形"清除"按钮保持不变.从这里,如果我点击灰色的"清除"按钮,键盘会在文本被清除时重新出现.
我该如何防止这种情况?如果键盘当前未打开,我希望该按钮在不重新打开键盘的情况下清除文本.
当我点击清除按钮时,会调用一个协议方法.但是向UISearchBar发送resignFirstResponder消息对键盘没有任何影响.
UIViewController用于实现放置UITableView UISearchBar并正在实现的视图.但你不能调用searchBarCancelButtonClicked.不知道是什么原因.
我想在表空(在第一次编辑搜索栏之前)时不显示范围栏,在编辑时没有范围栏,最后在编辑完成时显示它.我知道UISearchBarDelegate协议,但我不知道如何用动画显示/隐藏范围栏.我知道UISearchBar有setShowsScopeBar:,但没有setShowsScopeBar:animated:办法setShowsCancelButton:animated.
编辑[searchBar sizeToFit]显示/隐藏范围栏后
调用非常重要.有没有一个很好的方法来动画这个?(我应该做这个?这似乎并没有工作.)
所以我有一个标准设置,用于在我的tvOS应用程序中设置搜索视图.
let storyboard = UIStoryboard(name: "Main", bundle: nil)
guard let resultsController = storyboard.instantiateViewControllerWithIdentifier(SearchResultsViewController.storyboardIdentifier) as! SearchResultsViewController
let searchController = UISearchController(searchResultsController: resultsController)
searchController.searchResultsUpdater = resultsController
searchController.hidesNavigationBarDuringPresentation = false
searchController.searchBar.placeholder = NSLocalizedString("Enter keyword (e.g. iceland)", comment: "")
let searchContainer = CustomUISearchContainerViewController(searchController: searchController)
Run Code Online (Sandbox Code Playgroud)
当推入导航堆栈时,这是一个视图,其顶部有搜索栏,下面的结果如下所示
因此,每当结果很大并且我必须滚动键盘时,只要我向上滚动并向上滑过最顶端的结果,键盘就会折叠并再次展开.有什么方法可以防止这种行为吗?我只是希望它一直保持开放状态.我想的可能是子类化UISearchController,但我不确定在那里甚至可以替换
我有一个UIViewController这是一个UISearchBarDelegate和MKMapViewDelegate.该searchBarSearchButtonClicked事件工作正常,但在iOS 4.2中测试时,在点击取消按钮时,不会调用searchBarCancelButtonClicked.在4.3中一切正常.我有相同代码的其他视图,它工作正常.我已经三次检查了方法签名.
它可能与MapView有关,还是我做了一些明显的错误?
我的.h文件:
@interface MyViewController : UIViewController <UISearchBarDelegate,MKMapViewDelegate,UIAlertViewDelegate>{
MKMapView *mapMainView;
UISearchBar *sBar;
}
@property (nonatomic, retain) UISearchBar *sBar;
@end
Run Code Online (Sandbox Code Playgroud)
我创建搜索栏如下:
sBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320.0, 70.0)] autorelease];
sBar.delegate = self;
sBar.showsCancelButton = YES;
[self.view addSubview:sBar];
[sBar becomeFirstResponder];
Run Code Online (Sandbox Code Playgroud)
方法:
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
[searchBar resignFirstResponder];
searchBar.hidden = YES;
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道为什么会这样?
大家好我正在使用UITableView和Swift中的UISearchBar开发新的应用程序,它已经正常工作了.但由于最终项目必须有一个完整的自定义搜索栏,因此我不得不移动到UITextField作为输入Outlet,因为它具有自定义功能.
问题是我无法弄清楚如何编码,以便UITextField的行为类似于UISearchBar.不知道如何过滤UITextField输入并使字符串可用于UISearchBarDelegate方法.
所以任何人都可以帮我解决这个问题?
编辑:我跟随丹尼尔的帮助,并提出了这个代码,但它返回"零",没有工作.
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate {
@IBOutlet weak var txtSearchBar: UITextField!
var searchTxt = ""
let prods = ["água", "terra", "ar", "fogo"]
var searchResults:[String] = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
txtSearchBar.delegate = self
}
func textFieldDidEndEditing(textField: UITextField) {
searchTxt = textField.text
println(searchTxt)
searchResults = prods.filter({(produtos:String) -> Bool in
let nameMatch = produtos.rangeOfString(self.searchTxt, options: NSStringCompareOptions.CaseInsensitiveSearch)
println(nameMatch)
return nameMatch != nil})
}
Run Code Online (Sandbox Code Playgroud)
我的输入是字母"ar",但它返回"nil",因为它不应该是因为其中一个数组的对象是"ar".
在UISearchBar上,有一个X元素允许您一次清除所有内容.有没有办法在发生这种情况时收到通知?
UISearchBarDelegate::searchBarCancelButtonClicked 仅在点击"取消"按钮时触发.
我已经挖掘了stackoverflow并找到了我转换为Swift的解决方案,它似乎不起作用,选择器仍在执行.
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
self.filter.searchTerm = self.searchBar.text
NSObject.cancelPreviousPerformRequestsWithTarget(self, selector: "getHints", object: nil)
NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "getHints", userInfo: nil, repeats: false)
}
Run Code Online (Sandbox Code Playgroud)
在swift中有更好的方法吗?谢谢!
我UISearchBar在我的代码中使用.我已经在头文件中导入了它的委托,并在实现文件中也实现了一些委托方法.
当我们点击时UISearchBar,键盘会出现输入文字.键盘的返回键是" 搜索 "按钮.它将默认禁用.当我们输入一个角色时,它将被启用.(我对吗?)
问题来了..我想UISearchBar在用户输入至少两个字母时启用键盘的返回键.
可能吗?如果是,我们该怎么做?
谢谢
iphone objective-c uisearchbar uikeyboard uisearchbardelegate
uisearchbar ×8
iphone ×6
swift ×4
keyboard ×2
objective-c ×2
animation ×1
appearance ×1
apple-tv ×1
ios ×1
ios4 ×1
ios8 ×1
searchbar ×1
tvos ×1
uikeyboard ×1
uitextfield ×1