Аналогичное решение заключается в реализации gestureRecognizer:shouldReceiveTouch:
с использованием класса представления, чтобы определить, какое действие нужно предпринять. Преимущество такого подхода состоит в том, что в области, непосредственно связанной с таблицей, нет маскирующих кранов (эти области все еще сходят с экземпляров UITableView, но не представляют собой ячейки).
У этого также есть бонус, что он работает с несколькими таблицами на одном представлении (без добавления дополнительного кода).
Предостережение: есть предположение, что Apple не будет измените имя класса.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
return ![NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"];
}
Это не красиво, но вы можете использовать URLEncoder только для части запроса:
String query = URLEncoder.encode("part1:part2", StandardCharsets.UTF_8);
// Required by server.
query = query.replace("+", "%20");
String uri =
new URI("http", "localhost:1181", "/stream.mjpg", null, null)
+ "?" + query;