我遇到UITableView无法检测到触摸的问题。
在仅限iPhone的应用程序中,我有一个UIViewController,其中包含:
标签有动态高度,因为它们包含一些我必须从网页上回溯的文字,因此我使用自动布局。
我在viewDidLayoutSubviews
方法中设置了UIScrollView的内容大小,我通过总结UITableView.frame.origin.y
及其高度来实现这一点。
问题出现了:当标签只包含一些单词并且UITableView不超过iPhone屏幕尺寸时,一切正常。但是当它们成长,并且UITableView被推下时,当我向下滚动时,我不能再单击该单元格了。此外,如果加载视图时表格是一半可见而一半不可见,我可以单击可见单元格,但如果我向下滚动,则无法单击其他单元格。
我正在使用swift 2和Xcode 7。
以下是一个例子:
可点击:
无法点击:
答案 0 :(得分:3)
做以下事情:
yourView.clipToBounds = true
现在,如果UITableView
未显示,则表示UIView
与UITableView
相比不大一样。
确保UIView
高度较大以容纳其中的内容,然后尝试点击它。
更新:
如果您使用AutoLayout
,请执行以下操作。
UIView
UIView
现在,在viewDidLayoutSubviews
中将UIView
的约束更改为UITableView
contentSize
身高。
self.heightConstraint = self.tableView.contentSize.height
如果有帮助,请告诉我!
答案 1 :(得分:0)
在@Rémy Virin's答案中添加一些信息:
从Apple文档中,您不应该将UITableViewinside嵌入UIScrollView。
重要提示:您不应在UIScrollView对象中嵌入UIWebView或UITableView对象。如果这样做,可能会导致意外行为,因为两个对象的触摸事件可能会混淆和错误处理。
添加:解决方案 由于您还希望滚动表格上方的内容,因此一个解决方案是为表格放置Header View
并将内容置于其上在那里使它沿着表视图滚动。
答案 2 :(得分:0)
如果您使用someFunction():Observable<Response>{
let response$ = new Observerable();
if (...){
response$ = this.http.get(url1)
}else{
response$ = this.http.get(url2)
}
return response$
}
,则无需指定public social(providerName:string):Observable<Response>{
let response$ = new Observable<Response>();
let url =providerName+'/someUrl'
let authWindow;
if(window.cordova){
let authWindow= InAppBrowser.open(url, '_blank', 'location=no');
authWindow.addEventListener('loadstop', event => {
if(event.url.indexOf(`${providerName}/callback`) > -1){
authWindow.close()
}
});
authWindow.addEventListener('loaderror', event =>{
if(event.url.indexOf(`${providerName}/callback`) > -1){
authWindow.close()
}
});
authWindow.addEventListener('exit', () => {
setTimeout(()=>{
response$ = this.http.get(...)
},500)
})
}else{
authWindow = createWindow(popupUrl);
let window = Observable.interval(1000);
let pingWindow = window.subscribe(
()=>{
if(authWindow.closed){
pingWindow.unsubscribe();
response$ = this.http.get(...)
}
})
}
return response$
至INSERT INTO t1 (money) values (nullif('0.00', ''))
,因为它会通过获取其子视图的高度自动展开。
在您的情况下,请增加基座Autolayout
的高度(您提到的内容视图),contentSize
增加UIScrollView
时保持UIView
。
tableView
在扩展到容器视图之下时变得无法响应。