我希望能够从两个地方调用这个函数:当我完成编辑一个文本字段时,我想在 awebView
中没有的时候添加一个新的stackView
,我也希望能够使用 abarButtonItem
来做到这一点。
我有两个问题。当条形按钮调用此函数时,参数 'url' 变为对象, type UIBarButtonItem
。当它从 调用时textFieldShouldReturn
,它正确地以NSURL
. 如果用户没有在地址字段中输入任何内容并按回车键,则会出现空白NSURL
,并且不使用默认值。(我希望它是)
从函数中调用应该是什么样子textfieldShouldReturn
,以便空白将触发默认值?
我如何处理我的函数或按钮将调用该函数的事实,为什么我的命名参数“url”变成了我猜想的“发送者”?
override func viewDidLoad() {
super.viewDidLoad()
setDefaultTitle()
let add = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: #selector(ViewController.addWebView))
let delete = UIBarButtonItem(barButtonSystemItem: .Trash, target: self, action: #selector(ViewController.deleteWebView))
navigationItem.rightBarButtonItems = [delete, add]
}
func addWebView(url: NSURL = NSURL(string: "https://www.google.com")!) {
let webView = UIWebView()
webView.delegate = self
stackView .addArrangedSubview(webView)
webView.loadRequest(NSURLRequest(URL: url))
webView.layer.borderColor = UIColor.blueColor().CGColor
selectWebView(webView)
let recognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.webViewTapped))
recognizer.delegate = self
webView.addGestureRecognizer(recognizer)
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
if let webView = activeWebView, address = addressBar.text {
if let url = NSURL(string: address) {
webView.loadRequest(NSURLRequest(URL: url))
}
} else if stackView.arrangedSubviews.count == 0 {
let address = NSURL(string: addressBar.text!)!
addWebView(address)
}
textField.resignFirstResponder()
return true
}